我正在从 Oracle JDK8 迁移到 OpenJDK11。我面临 exportObject(new Myobj) 调用的问题。
由于 rmi 在 jdk11 中被删除,我使用 glassfish jar 来使用 PortableRemoteObject 来导出和查找远程对象
我正在使用来自 glassfish 的下面的罐子来获取 openjdk11 中缺少的类。
- glassfish-corba-omgapi
- glassfish-corba-orb
- javax.transaction.api
- pfl-动态
- pfl-基础
- glassfish-corba-internal-api
- pfl-tf.jar
我期待 javax.rmi.PortableRemoteObject.PortableRemoteObject.exportObject() 像在 JDK8 中一样工作。但我得到了错误。我尝试使用 glassfish 罐子中的 com.sun.corba.ee.impl.javax.rmi.PortableRemoteObjet 和 com.sun.corba.se.impl.javax.rmi.PortableRemoteObject 。但仍然面临同样的错误。
java.rmi.NoSuchObjectException:对象未在 javax.rmi.PortableRemoteObject.toStub(PortableRemoteObject.java:132) 的 com.sun.corba.ee.impl.javax.rmi.PortableRemoteObject.toStub(MyClass.java:18) 处导出
RMIC 的 Ant 任务
<!-- Ant task for RMIC -->
<target name="rmic">
<taskdef name="rmic"
classname="org.apache.tools.ant.taskdefs.Rmic" />
<rmic classname="com.MyRmiImpl"
base="${classes.dir}"
classpathref="javac.classpath" />
</target>
公共类 MyNode {
static Registry registry;
public static void main(String[] args) {
try {
registry = LocateRegistry.createRegistry(3322);
MyRmiImpl remoteImpl = new MyRmiImpl();
PortableRemoteObject.exportObject(remoteImpl);
Remote objStub = PortableRemoteObject.toStub(remoteImpl);// getting exception at this line
registry.rebind("MyRmiInterface", objStub);
} catch (Exception e) {
e.printStackTrace();
}
}
}