JDK-4728756 : CopyObject throws Marshalling exception for org.jdom.Document object
  • Type: Bug
  • Component: other-libs
  • Sub-Component: corba:orb
  • Affected Version: j2ee1.4-ea1
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2002-08-08
  • Updated: 2003-03-04
  • Resolved: 2004-12-10
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other Other
1.4.1 03Fixed 1.4.2Fixed
Description
*******************************************************************************
###@###.### 2002-12-10

Fix verified OK

With build - j2sdk-1_4_2-beta-bin-b09-solaris-sparcv9-04_dec_2002
With test - tests/interoperability/serialization

*******************************************************************************

CopyObject throws Marshalling exception for org.jdom.Document object. A simple
java test program is attached for this (javatestcase.tar.gz)

The same error is also seen if an ear if deployed on the J2EE RI server. The
relvant jars and ear file is also attached (testearfile.tar.gz)

    Steps to run the application:-
    0. Add jdom.jar to the classpath
    1.  Modify the lookup.jsp in the ear to reflect the correct
         location of the document serialized file (xml.obj).
    2.  Deploy the this modified ear.
    3.  Access the app from http://<host>:<port>/war1/lookup

This problem is being faced by an ISV using S1AS application server that uses the RI ORB code. This is a show stopper bug for the ISV to give a demo at the sales conference. There is a separate bug filed for this against S1AS (4724983)

The stack trace for this is as under from the J2EE RI server:
(Standalone java program also throws similar exception)

Exception in thread "HttpProcessor[8000][4]" org.omg.CORBA.MARSHAL: Unable to read value from
underlying bridge : Serializable readObject method failed internally  vmcid: SUN  minor code: 211
completed: Maybe
        at
com.sun.corba.ee.internal.iiop.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:947)
        at
com.sun.corba.ee.internal.iiop.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:853)
        at
com.sun.corba.ee.internal.iiop.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:845)
        at
com.sun.corba.ee.internal.iiop.CDRInputStream.read_abstract_interface(CDRInputStream.java:312)
        at
com.sun.corba.se.internal.io.IIOPInputStream.readObjectDelegate(IIOPInputStream.java:228)
        at
com.sun.corba.se.internal.io.IIOPInputStream.readObjectOverride(IIOPInputStream.java:381)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:316)
        at java.util.ArrayList.readObject(ArrayList.java:548)
        at com.sun.corba.se.internal.io.IIOPInputStream.readObject(Native Method)
        at
com.sun.corba.se.internal.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1298)
        at com.sun.corba.se.internal.io.IIOPInputStream.inputObject(IIOPInputStream.java:908)
        at
com.sun.corba.se.internal.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:261)
        at
com.sun.corba.se.internal.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:247)
        at com.sun.corba.se.internal.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:209)
        at
com.sun.corba.ee.internal.iiop.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1078)
        at com.sun.corba.ee.internal.iiop.CDRInputStream.read_value(CDRInputStream.java:296)
        at
com.sun.corba.se.internal.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1571)
        at
com.sun.corba.se.internal.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:1784)
        at com.sun.corba.se.internal.io.IIOPInputStream.inputObject(IIOPInputStream.java:913)
        at
com.sun.corba.se.internal.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:261)
        at
com.sun.corba.se.internal.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:247)
        at com.sun.corba.se.internal.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:209)
        at
com.sun.corba.ee.internal.iiop.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1078)
        at com.sun.corba.ee.internal.iiop.CDRInputStream.read_value(CDRInputStream.java:296)
        at
com.sun.corba.se.internal.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1571)
        at
com.sun.corba.se.internal.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:1784)
        at
com.sun.corba.se.internal.io.IIOPInputStream.defaultReadObjectDelegate(IIOPInputStream.java:436)
        at
com.sun.corba.se.internal.io.InputStreamHook.defaultReadObject(InputStreamHook.java:163)
        at org.jdom.Element.readObject(Element.java:1699)
        at com.sun.corba.se.internal.io.IIOPInputStream.readObject(Native Method)
        at
com.sun.corba.se.internal.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1298)
        at com.sun.corba.se.internal.io.IIOPInputStream.inputObject(IIOPInputStream.java:908)
        at
com.sun.corba.se.internal.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:261)
        at
com.sun.corba.se.internal.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:247)
        at com.sun.corba.se.internal.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:209)
        at
com.sun.corba.ee.internal.iiop.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:942)
        at
com.sun.corba.ee.internal.iiop.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:853)
        at
com.sun.corba.ee.internal.iiop.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:845)
        at
com.sun.corba.ee.internal.iiop.CDRInputStream.read_abstract_interface(CDRInputStream.java:312)
        at
com.sun.corba.se.internal.io.IIOPInputStream.readObjectDelegate(IIOPInputStream.java:228)
        at
com.sun.corba.se.internal.io.IIOPInputStream.readObjectOverride(IIOPInputStream.java:381)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:316)
        at java.util.ArrayList.readObject(ArrayList.java:548)
        at com.sun.corba.se.internal.io.IIOPInputStream.readObject(Native Method)
        at
com.sun.corba.se.internal.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1298)
        at com.sun.corba.se.internal.io.IIOPInputStream.inputObject(IIOPInputStream.java:908)
        at
com.sun.corba.se.internal.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:261)
        at
com.sun.corba.se.internal.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:247)
        at com.sun.corba.se.internal.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:209)
        at
com.sun.corba.ee.internal.iiop.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1078)
        at com.sun.corba.ee.internal.iiop.CDRInputStream.read_value(CDRInputStream.java:296)
        at
com.sun.corba.se.internal.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1571)
        at
com.sun.corba.se.internal.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:1784)
        at com.sun.corba.se.internal.io.IIOPInputStream.inputObject(IIOPInputStream.java:913)
        at
com.sun.corba.se.internal.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:261)
        at
com.sun.corba.se.internal.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:247)
        at com.sun.corba.se.internal.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:209)
        at
com.sun.corba.ee.internal.iiop.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1078)
        at com.sun.corba.ee.internal.iiop.CDRInputStream.read_value(CDRInputStream.java:296)
        at
com.sun.corba.se.internal.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1571)
        at
com.sun.corba.se.internal.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:1784)
        at com.sun.corba.se.internal.io.IIOPInputStream.inputObject(IIOPInputStream.java:913)
        at
com.sun.corba.se.internal.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:261)
        at
com.sun.corba.se.internal.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:247)
        at com.sun.corba.se.internal.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:209)
        at
com.sun.corba.ee.internal.iiop.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:942)
        at com.sun.corba.ee.internal.iiop.CDRInputStream.read_value(CDRInputStream.java:292)
        at com.sun.corba.ee.internal.javax.rmi.CORBA.Util.copyObjects(Util.java:456)
        at javax.rmi.CORBA.Util.copyObjects(Util.java:296)
        at org.omg.stub.com.sun.ejbtest.ejb._EjbTest_Stub.execute(Unknown Source)
        at org.apache.jsp.lookup$jsp._jspService(lookup$jsp.java:79)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:202)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
        at
org.apache.catalina.core.ApplicationFilterChain.access$0(ApplicationFilterChain.java:197)
        at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:176)
        at java.security.AccessController.doPrivileged(Native Method)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:172)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: 1.4.1_03 mantis FIXED IN: 1.4.1_03 mantis INTEGRATED IN: 1.4.1_03 mantis mantis-b06 VERIFIED IN: mantis-beta
14-06-2004

SUGGESTED FIX ###@###.### 2003-01-31 Files which will be changed for this bug src/share/classes/com/sun/corba/se/internal/iiop/CDRInputStream_1_0.java src/share/classes/com/sun/corba/se/internal/iiop/CDRInputStream_1_2.java src/share/classes/com/sun/corba/se/internal/orbutil/CacheTable.java src/share/classes/com/sun/corba/se/internal/orbutil/MinorCodes.java
11-06-2004

EVALUATION I could reproduce the problem. Currently investigating the cause of the problem, which is in our native code. ###@###.### 2002-08-08 ---- The fix is due to Zero Length strings, I have fixed the problem in rip-int and also was tested by our SQE and SUN ONE Appserver customers. Should go to J2SE 1.4.1 patch for RI to work correctly. ###@###.### 2002-09-17 ------
17-09-2002