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