在shared.jar我有:
abstract class MyParent {
}
abstract class MyClass {
MyParent getFoo();
}
server.jar包含
abstract class MyChild extends MyParent {
}
abstract class MyClassConcrete {
MyParent getFoo() {return new MyChild();}
}
客户端.jar:
MyParent foo = myClass.getFoo();
如果所有 3 个 jar 都在一个类加载器中,那么一切正常。
但是客户端和服务器在不同的 JVM 中,同时:
- JVM-1 包含:server.jar,shared.jar
- JVM-2 包含:client.jar、shared.jar
客户端调用服务器。服务器返回MyConcreteClass并且 Java 无法对其进行反序列化(ClassNotFoundException)。
我想做的事:
- 服务器序列化类并发送数据和类的祖先集
- 客户端找到它可能反序列化的最窄的祖先。
一切都很好:我们在客户端上有MyParent的实例,这就是我们所需要的。
我不敢相信没有这样的引擎。你认识一个吗?我确信远程呼叫应该尽可能类似于本地呼叫。
谢谢。