Java RMI 不能以传统方式与 AdoptJDK Openj9 JVM 一起工作吗?

Is Java RMI doesnt work traditional way with AdoptJDK Openj9 JVM?

我正在尝试使用 AdoptOpenJDK 的 OpenJ9 JVM 启动一个简单的 RMI 服务器,但是程序退出时没有 error/exception,并且 RMI 服务器没有启动。 完全相同的程序适用于 AdoptOpenJDK 的 HotSpot JVM 和其他 oracle 变体。

示例代码:

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

OpenJ9 开源社区贡献者确认这是 OpenJ9 的真正问题。 OpenJ9 似乎在创建新服务器后立即丢弃它。 当调用UnicastRemoteObject.exportObject 时,会创建一个WeakReference,并注册到reaper中的ReferenceQueue中。当要销毁导出的对象时,reaper 检查是否没有更多的导出对象需要跟踪,然后 reaper 线程将杀死自己,如果没有其他线程保持存活则 VM。

预计此问题将在 -Release 0.24(Java 8、11、15)1 月更新,Release 0.25(Java 16)

注:最新动态请关注 https://github.com/eclipse/openj9/issues/10503