【发布时间】:2012-05-02 05:40:10
【问题描述】:
在 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();}
}
client.jar:
MyParent foo = myClass.getFoo();
如果所有 3 个 jar 都在一个类加载器中,则一切正常。
但是客户端和服务器在不同的JVM中,而:
- JVM-1 包含:server.jar、shared.jar
- JVM-2 包含:client.jar、shared.jar
客户端调用服务器。服务器返回 MyConcreteClass 并且 Java 无法对其进行反序列化 (ClassNotFoundException)。
我想做什么:
- 服务器序列化类并发送数据和类的祖先集
- 客户端找到它可能反序列化的最窄的祖先。
一切正常:我们在客户端上有 MyParent 的实例,这正是我们所需要的。
我不敢相信没有这样的引擎。你认识一个吗? 我确信远程呼叫应该尽可能类似于本地呼叫。
谢谢。
【问题讨论】:
标签: java spring serialization rmi