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.jar

El 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.

Respuestas a la pregunta(2)

Su respuesta a la pregunta