Ok, I was able to coerce a little more information out of the server that was failing. Here's a stack trace for the exception that the RMI server is throwing:

|[#|2006-12-08T11:17:21.192-0500|WARNING|j2ee-ri1.4.1|javax.enterprise.resource.corba.S1AS-ORB.rpc.encoding|_ThreadID=13;|"IOP00810207:
 (MARSHAL) Underflow in BufferManagerReadStream after last fragment in message"|
|org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 207  completed: No|
|    at 
com.sun.corba.ee.impl.logging.ORBUtilSystemException.endOfStream(ORBUtilSystemException.java:5711)|
|    at 
com.sun.corba.ee.impl.logging.ORBUtilSystemException.endOfStream(ORBUtilSystemException.java:5733)|
|    at 
com.sun.corba.ee.impl.encoding.BufferManagerReadStream.underflow(BufferManagerReadStream.java:93)|
|    at 
com.sun.corba.ee.impl.encoding.CDRInputStream_1_1.grow(CDRInputStream_1_1.java:75)|
|    at 
com.sun.corba.ee.impl.encoding.CDRInputStream_1_2.alignAndCheck(CDRInputStream_1_2.java:31)|
|    at 
com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_long(CDRInputStream_1_0.java:468)|
|    at 
com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readValueTag(CDRInputStream_1_0.java:1660)|
|    at 
com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:992)|
|    at 
com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:244)|
|    at 
com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl$14.read(DynamicMethodMarshallerImpl.java:329)|
|    at 
com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readArguments(DynamicMethodMarshallerImpl.java:371)

Given the names of the methods on this stack trace (i.e., readValueTag()), it appears this is expecting to see some sort of tagged value written as the argument. The code that's marshalling the IDLEntity is just calling the helper class to write the object data to the stream, and is not adding any tag information. This area is a complete unknown to me, so I'm not sure what should be getting written. Interestingly, the test is working in the reverse direction (from Sun to Yoko). If someone could point me to where this object unmarshalling would be getting handled, I should be able to figure out what the expectations are.

Rick
|



Rick McGuire wrote:
Ok, I've managed to find where these arguments are getting written to the request. The TypeDescriptor appears to be getting set correctly, and it is resolving and calling the correct helper class to write the value to the argument request stream. The value getting written is a single short value. The MinorCode value I'm getting back for the marshal exception I believe is indicating a premature end-of-stream on the request. I'm guessing that that these sorts of entities should be preceded by some sort of type code information? Does anybody know what's expected with this sort of argument?
This appears to be the only argument type failing the tests now.

Rick


Rick McGuire wrote:
Ok, now that I've got the stub serialization issues fixed, it's on to the next problem. Now I'm seeing marshall exceptions trying to pass an IDLEntity type to a method over RMI-IIOP. This is going to a Sun RMI server, so I'm not really able to figure out the cause other than a Minor code of 0xcf. Anybody have any suggestions on where I can start debugging this problem?

Rick




Reply via email to