在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而:
- JVM-1包含:的server.jar,shared.jar
- JVM-2包含:client.jar中, shared.jar
客戶端打電話給服務器。服務器返回MyConcreteClass和Java無法反序列化它(ClassNotFoundException)。
我想做的事:
- 服務器序列化類和發送數據,並設置類的祖先
- 客戶發現它可以反序列化最窄的祖先。
而且一切正常:我們在客戶端上MyParent的實例,這就是我們所需要的。
我不敢相信沒有這樣的引擎。你知道嗎? 我確信遠程通話應儘可能與本地通話相似。
謝謝。
你在談論Dynamic Proxies嗎? http://docs.oracle.com/javase/6/docs/api/index.html?java/lang/reflect/Proxy.html – mazaneicha 2012-04-20 17:47:34