feat(java): support xlang serialization for GraalVM native image #3126
+153
−13
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Closes #3112
This PR adds support for xlang serialization mode with GraalVM native image builds.
Changes:
XtypeResolver.ensureSerializersCompiled()to ensure serializers for xlang-registered classes are compiled at GraalVM build timeFory.ensureSerializersCompiled()to also callXtypeResolver.ensureSerializersCompiled()when xlang mode is enabledXlangExamplefor graalvm_tests to verify xlang mode works with native-image buildsXlangExamplefor build-time initialization in native-image propertiesRoot cause:
When xlang mode is enabled, classes registered via
Fory.register()go throughXtypeResolver, butFory.ensureSerializersCompiled()only processed classes inClassResolver.classInfoMap. This meant xlang-registered classes were not properly compiled at GraalVM build time, causing NullPointerException during initialization.Test plan