Разве Java RMI не работает традиционным способом с JVM AdoptJDK Openj9?

Я пытаюсь запустить простой сервер RMI с JVM AdoptOpenJDK OpenJ9, но программа завершается без ошибок/исключений, и сервер RMI не запускается. Точно такая же программа работает с HotSpot JVM AdoptOpenJDK и другими вариантами оракула.

Образец кода:

   Registry registry = LocateRegistry.createRegistry(9002);
   RMIServer myServerInstance = new RMIServer();
   <<MyClassStub>>stub = <<MyClassStub>> UnicastRemoteObject.exportObject(myServerInstance, 9002);
            registry.rebind("RMIServer", stub);

person ladybug    schedule 28.08.2020    source источник


Ответы (1)


Участники сообщества OpenJ9 с открытым исходным кодом подтверждают, что это реальная проблема с OpenJ9. OpenJ9, похоже, сразу же отбрасывает новый сервер после его создания. При вызове UnicastRemoteObject.exportObject создается WeakReference и регистрируется в ReferenceQueue в рипере. Когда экспортируемый объект должен быть уничтожен, жнец проверяет, не осталось ли больше экспортированных объектов для отслеживания, затем поток жнеца уничтожит себя и виртуальную машину, если нет других потоков, поддерживающих его жизнь.

Ожидается, что эта проблема будет исправлена ​​для -Release 0.24 (Java 8, 11, 15) Январское обновление, Release 0.25 (Java 16)

Примечание. Для получения последних обновлений следите за https://github.com/eclipse/openj9/issues/10503

person ladybug    schedule 17.12.2020