在 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个罐子都在一个类加载器中,一切都运行良好。
但是客户端和服务器位于不同的JVM中:
客户端拨打服务器电话。服务器返回 MyConcreteClass ,Java无法反序列化它( ClassNotFoundException )。
我想做什么:
一切正常:我们在客户端上有 MyParent 的实例,这就是我们需要的。
我不敢相信没有这样的引擎。你知道吗? 我确信远程呼叫应尽可能与本地呼叫类似。
感谢。
答案 0 :(得分:0)
实际上我找到了解决方案并制作了一个特殊的软件包来支持它:
答案 1 :(得分:0)
实现java.io.Serializable接口的对象可以使用writeReplace()和readResolve()方法将另一个对象替换为序列化/反序列化的对象。我可以看到这被用来解决你的问题。但是,我自己没试过。