Deserializar el objeto remoto a la clase accesible más estrecha
Enshared.jar Yo tengo:
<code>abstract class MyParent { } abstract class MyClass { MyParent getFoo(); } </code>
server.jar contiene
<code>abstract class MyChild extends MyParent { } abstract class MyClassConcrete { MyParent getFoo() {return new MyChild();} } </code>
cliente.jar:
<code>MyParent foo = myClass.getFoo(); </code>
Si los 3 frascos están en un cargador de clases, todo funciona bien.
Pero el cliente y el servidor están en diferentes JVM mientras que:
JVM-1 contiene:server.jar, shared.jarJVM-2 contiene:cliente.jar, shared.jarEl cliente hace la llamada al servidor. Servidor devuelveMyConcreteClass y Java no puede deserializarlo (ClassNotFoundException).
Lo que quiero hacer:
El servidor serializa la clase y envía datos y un conjunto de ancestros de la claseEl cliente encuentra el antepasado más estrecho que puede deserializar.Y todo está bien: tenemos instancia deMis padres En el cliente y eso es lo que necesitamos.
No puedo creer que no haya tales motores. ¿Conoces uno? Estoy seguro de que la llamada remota debe ser lo más similar posible a las llamadas locales.
Gracias.