bug in RMI/IIOP ?

Hi everbody,

I sometimes receive a MARSHAL exception in my RMI/IIOP client contacting my RMI/IIOP server. I am using jdk1.3.1. The UID of the serialized class seems to get lost. Has anybody else experienced the same failure ? Does anybody know the reason for this or even has a bugfix ?

Thank you,

Thomas

org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : Mismatched

serialization UIDs : Source (Rep. IDRMI:de.d.c.b.a.TestClass:E129DE048289A109:239641E1A3413478) = 239641E1A3413478 where

as Target (Rep. ID RMI:de.d.c.b.a.TestClass:FFFFFFFFFFFFFFFF:FFFFFFFFFFFFFFFF) = FFFFFFFFFFFFFFFF minor code: 0 comple

ted: No

at com.sun.corba.se.internal.iiop.CDRInputStream.read_value(CDRInputStream.java:920)

at com.sun.corba.se.internal.corba.TCUtility.unmarshalIn(TCUtility.java:250)

at com.sun.corba.se.internal.corba.AnyImpl.read_value(AnyImpl.java:359)

at com.sun.corba.se.internal.iiop.CDRInputStream.read_any(CDRInputStream.java:572)

at com.sun.corba.se.internal.javax.rmi.CORBA.Util.readAny(Util.java:199)

at javax.rmi.CORBA.Util.readAny(Util.java:92)

at com.sun.corba.se.internal.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:1344)

at com.sun.corba.se.internal.io.IIOPInputStream.inputObject(IIOPInputStream.java:863)

at com.sun.corba.se.internal.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:254)

at com.sun.corba.se.internal.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:241)

at com.sun.corba.se.internal.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:201)

at com.sun.corba.se.internal.iiop.CDRInputStream.read_value(CDRInputStream.java:1076)

at com.sun.corba.se.internal.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:1425)

at com.sun.corba.se.internal.io.IIOPInputStream.inputObject(IIOPInputStream.java:863)

at com.sun.corba.se.internal.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:254)

at com.sun.corba.se.internal.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:241)

at com.sun.corba.se.internal.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:201)

at com.sun.corba.se.internal.iiop.CDRInputStream.read_value(CDRInputStream.java:1076)

at de.siemens.med.pacs.ctcommunication.rmi._RMIReceiverImpl_Tie._invoke(Unknown Source)

at com.sun.corba.se.internal.corba.ServerDelegate.dispatch(ServerDelegate.java:273)

at com.sun.corba.se.internal.iiop.ORB.process(ORB.java:233)

at com.sun.corba.se.internal.iiop.CachedWorkerThread.doWork(IIOPConnection.java:262)

at com.sun.corba.se.internal.iiop.CachedWorkerThread.run(IIOPConnection.java:230)

[2738 byte] By [tshaug] at [2007-9-26 5:56:28]
# 1

I got the same problem trying to communicate between a servlet running under WebSphere using a jdk 1.2.2 and a business object running under jdk 1.3.1.

The object passed between the two JVM contains a Vector[]. I've solved the problem with a loop that display all the objects of my collection.

It seems that the proxy doesn't retrieve all the object linked it was in error message ....

=> Unable to read value from underlying bridge

oliviero at 2007-7-1 14:29:50 > top of Java-index,Core,Core APIs...
# 2

I've investigate more and discovered that this bug is referenced : Bug Id 4488137.

In my case the exception is raised depending how my object is accessed. When I add debug, this changes the threads execution steps and resolve the problem. When I suppress all the debug, two threads send the same request on the same object over RMI and crashes each time.

It seems that this bug is resolved in JDK 1.3.1_01 but I didn't test it.

oliviero at 2007-7-1 14:29:50 > top of Java-index,Core,Core APIs...