Odserializuj zdalny obiekt do najwęższej dostępnej klasy
Wshared.jar Mam:
<code>abstract class MyParent { } abstract class MyClass { MyParent getFoo(); } </code>
server.jar zawiera
<code>abstract class MyChild extends MyParent { } abstract class MyClassConcrete { MyParent getFoo() {return new MyChild();} } </code>
client.jar:
<code>MyParent foo = myClass.getFoo(); </code>
Jeśli wszystkie 3 słoiki znajdują się w jednym programie ładującym, wszystko działa dobrze.
Ale klient i serwer znajdują się w różnych maszynach JVM, podczas gdy:
JVM-1 zawiera:server.jar, shared.jarJVM-2 zawiera:client.jar, shared.jarKlient nawiązuje połączenie z serwerem. Zwraca serwerMyConcreteClass a Java nie może go deserializować (Klasa nie znaleziono wyjątku).
Co chcę zrobić:
Serwer serializuje klasę i wysyła dane oraz zestaw przodków klasyKlient znajduje najwęższego przodka, którego może deserializować.I wszystko jest w porządku: mamy wystąpienieMój rodzic na kliencie i tego potrzebujemy.
Nie mogę uwierzyć, że nie ma takich silników. Znasz jeden? Jestem pewien, że zdalne wywołanie powinno być jak najbardziej podobne do połączeń lokalnych.
Dzięki.