question using Remoting TransportServer/Client
miltgrin Dec 15, 2005 4:11 PMI have a very complex object that I am trying to communicate between server and client. I have used the example in section 3. "Transporter sample - JBoss serialization" as my guide. If I return a null value it works fine. However if I try to return a real object I get a complex serialization error:
org.jboss.serial.exception.SerializationException
at org.jboss.serial.persister.PrivateWritePersister.writeData(PrivateWritePersister.java:82)
at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.java:72)
at org.jboss.serial.objectmetamodel.DataContainer$DataContainerOutput.writeObject(DataContainer.java:131)
.....
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
... 110 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor94.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.serial.persister.PrivateWritePersister.writeData(PrivateWritePersister.java:72)
... 120 more
Caused by: org.jboss.serial.exception.SerializationException
at org.jboss.serial.persister.PrivateWritePersister.writeData(PrivateWritePersister.java:82)
at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.java:72)
at org.jboss.serial.objectmetamodel.DataContainer$DataContainerOutput.writeObject(DataContainer.java:131)
... 124 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
... 139 more
Caused by: java.rmi.MarshalException: Invalid remote object
at java.rmi.server.RemoteObject.writeObject(RemoteObject.java:347)
... 144 more
I have only built the interface/implementation for the highest level object that I was trying to pass between client/server. Here is the code that sets up the server
String locatorURI = "socket://localhost:5401/?serializationtype=jboss";
TransporterServer server = null;
server = TransporterServer.createTransporterServer(locatorURI, new ProviderInterfaceImpl());
info.transporter = server;
Do I need to build intefaces for all the objects that get indirectly passed and do I need to indicate to the transferServer all of these implementations?
Any help would be appreciated.