serialization - 当通过远程 EJB 从数据库加载数据时,Java Web Start 应用程序会出现 MARSHAL 异常

标签 serialization jpa jakarta-ee marshalling java-web-start

我有一个 Java Web Start 应用程序调用远程 Java EE 5 EJB 从数据库加载数据。当数据从 EJB 返回到客户端时,我得到以下异常。网上查了一下,好像每个人都会遇到这个异常,每个人都有不同的解决方法。

  • 我的所有实体(无论是否抽象)都实现了 Serializable 并具有 serialVersionUID。
  • 客户端和服务器运行完全相同的 JVM,1.6.0_20
  • 我正在使用 EclipseLink 作为 JPA 提供程序运行 GlassFish v2.1.1。
  • 我的一些实体使用枚举,但 1.6.0_20 没有枚举序列化错误。
  • 在将它们传递给客户端之前,我在服务器端初始化了所有延迟加载的关系。

  • This person似乎认为这个问题可能是由从实体到自身的双向 @OneToMany/@ManyToOne 关系引起的,但我在这个程序的早期版本中遇到了这些问题,没有问题。

    这是来自 Java Web Start 控制台:
    Jul 14, 2010 1:59:23 PM com.myCompany.mis.science.ScienceApp lookupJndi
    INFO: Connecting to CORBA Host: localhost
    Hello 0
    Jul 14, 2010 1:59:36 PM com.sun.corba.ee.impl.encoding.CDRInputStream_1_0 readRMIIIOPValueType
    WARNING: "IOP00810211: (MARSHAL) Exception from readValue on ValueHandler in CDRInputStream<<Context:ReaderWriter[value(com.myCompany.mis.science.schedule.jpa.Schedule)]:com.myCompany.mis.science.schedule.jpa.Schedule.experimentBlockList,org.eclipse.persistence.indirection.IndirectList.delegate,java.util.Vector.elementData,[Ljava.lang.Object;<464>[0],com.myCompany.mis.science.schedule.jpa.ExperimentBlock.experiment,com.myCompany.mis.science.experiment.jpa.Experiment.reportList,org.eclipse.persistence.indirection.IndirectList.valueHolder,org.eclipse.persistence.internal.indirection.UnitOfWorkQueryValueHolder.value,org.eclipse.persistence.indirection.IndirectList.valueHolder>>"
    org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 211 completed: Maybe
     at com.sun.corba.ee.impl.logging.ORBUtilSystemException.valuehandlerReadException(ORBUtilSystemException.java:8516)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:973)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2009)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2240)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224)
     at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:427)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:364)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:330)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:896)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:466)
     at com.sun.corba.ee.impl.corba.TCUtility.unmarshalIn(TCUtility.java:296)
     at com.sun.corba.ee.impl.corba.AnyImpl.read_value(AnyImpl.java:610)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_any(CDRInputStream_1_0.java:748)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_any(CDRInputStream.java:406)
     at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.readAny(Util.java:504)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1937)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2240)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224)
     at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:427)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:364)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:330)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2009)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2240)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224)
     at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:427)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:364)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:330)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2009)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2240)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224)
     at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:427)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:364)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:330)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2009)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2240)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224)
     at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:427)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:364)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:330)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:896)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:466)
     at com.sun.corba.ee.impl.corba.TCUtility.unmarshalIn(TCUtility.java:296)
     at com.sun.corba.ee.impl.corba.AnyImpl.read_value(AnyImpl.java:610)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_any(CDRInputStream_1_0.java:748)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_any(CDRInputStream.java:406)
     at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.readAny(Util.java:504)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.read_Array(ValueHandlerImpl.java:695)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:361)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:330)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2009)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2240)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224)
     at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:427)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:364)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:330)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2009)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2240)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224)
     at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:427)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:364)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:330)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2009)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2240)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224)
     at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:427)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:364)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:330)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
     at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl$14.read(DynamicMethodMarshallerImpl.java:382)
     at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readResult(DynamicMethodMarshallerImpl.java:483)
     at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:195)
     at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:152)
     at com.sun.corba.ee.impl.presentation.rmi.bcel.BCELStubBase.invoke(BCELStubBase.java:225)
     at com.myCompany.mis.science.schedule.ejb.manager.__ScheduleManagerRemote_Remote_DynamicStub.getSchedule(com/myCompany/mis/science/schedule/ejb/manager/__ScheduleManagerRemote_Remote_DynamicStub.java)
     at com.myCompany.mis.science.schedule.ejb.manager._ScheduleManagerRemote_Wrapper.getSchedule(com/myCompany/mis/science/schedule/ejb/manager/_ScheduleManagerRemote_Wrapper.java)
     at com.myCompany.mis.science.schedule.editor.model.ScheduleModel.loadContent(ScheduleModel.java:375)
    
    Trace message truncated for length over 10K
    Jul 14, 2010 1:59:36 PM com.myCompany.mis.science.ScienceApp$1$1 uncaughtException
    SEVERE: null
    javax.ejb.EJBException: nested exception is: java.rmi.MarshalException: CORBA MARSHAL 1398079699 Maybe; nested exception is: 
     org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 211 completed: Maybe
    java.rmi.MarshalException: CORBA MARSHAL 1398079699 Maybe; nested exception is: 
     org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 211 completed: Maybe
     at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.mapSystemException(Util.java:279)
     at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:205)
     at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:152)
     at com.sun.corba.ee.impl.presentation.rmi.bcel.BCELStubBase.invoke(BCELStubBase.java:225)
     at com.myCompany.mis.science.schedule.ejb.manager.__ScheduleManagerRemote_Remote_DynamicStub.getSchedule(com/myCompany/mis/science/schedule/ejb/manager/__ScheduleManagerRemote_Remote_DynamicStub.java)
     at com.myCompany.mis.science.schedule.ejb.manager._ScheduleManagerRemote_Wrapper.getSchedule(com/myCompany/mis/science/schedule/ejb/manager/_ScheduleManagerRemote_Wrapper.java)
     at com.myCompany.mis.science.schedule.editor.model.ScheduleModel.loadContent(ScheduleModel.java:375)
     at com.myCompany.mis.science.schedule.editor.model.ScheduleModel.load(ScheduleModel.java:354)
     at com.myCompany.mis.science.schedule.editor.view.table.ScheduleTable.load(ScheduleTable.java:284)
     at com.myCompany.mis.science.schedule.editor.control.Actions$3.actionPerformed(Actions.java:303)
     at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
     at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
     at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
     at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
     at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
     at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
     at java.awt.Component.processMouseEvent(Component.java:6263)
     at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
     at java.awt.Component.processEvent(Component.java:6028)
     at java.awt.Container.processEvent(Container.java:2041)
     at java.awt.Component.dispatchEventImpl(Component.java:4630)
     at java.awt.Container.dispatchEventImpl(Container.java:2099)
     at java.awt.Component.dispatchEvent(Component.java:4460)
     at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
     at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
     at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
     at java.awt.Container.dispatchEventImpl(Container.java:2085)
     at java.awt.Window.dispatchEventImpl(Window.java:2478)
     at java.awt.Component.dispatchEvent(Component.java:4460)
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    Caused by: org.omg.CORBA.MARSHAL:   vmcid: SUN  minor code: 211 completed: Maybe
     at com.sun.corba.ee.impl.logging.ORBUtilSystemException.valuehandlerReadException(ORBUtilSystemException.java:8516)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:973)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2009)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2240)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224)
     at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:427)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:364)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:330)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:896)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:466)
     at com.sun.corba.ee.impl.corba.TCUtility.unmarshalIn(TCUtility.java:296)
     at com.sun.corba.ee.impl.corba.AnyImpl.read_value(AnyImpl.java:610)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_any(CDRInputStream_1_0.java:748)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_any(CDRInputStream.java:406)
     at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.readAny(Util.java:504)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1937)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2240)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224)
     at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:427)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:364)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:330)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2009)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2240)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224)
     at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:427)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:364)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:330)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2009)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2240)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224)
     at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:427)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:364)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:330)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2009)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2240)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224)
     at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:427)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:364)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:330)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:896)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:466)
     at com.sun.corba.ee.impl.corba.TCUtility.unmarshalIn(TCUtility.java:296)
     at com.sun.corba.ee.impl.corba.AnyImpl.read_value(AnyImpl.java:610)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_any(CDRInputStream_1_0.java:748)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_any(CDRInputStream.java:406)
     at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.readAny(Util.java:504)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.read_Array(ValueHandlerImpl.java:695)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:361)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:330)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:475)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2009)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2240)
     at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224)
     at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:427)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:364)
     at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:330)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:966)
     at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1052)
     at com.sun.corba.ee.impl.encoding.CDRInputStream.read_val
    Trace message truncated for length over 10K
    

    最佳答案

    警告:如果您在网上搜索,您会看到此错误消息出现在几个不同的问题上(请参阅我尝试过但失败的解决方案的问题),因此此解决方案并不通用。

    在这种特殊情况下,这似乎是由 EclipseLink 版本 1.1.2 中引入的回归引起的,并且仍然存在于版本 1.1.3、1.2.0 和(跳过几个版本)最新版本 2.1.0 中。恢复到 EclipseLink 1.1.1 消除了这个错误。

    它只出现在(远程)Java Web Start 客户端应用程序中——(本地)Web 应用程序(使用相同的实体)没有遇到这个问题。我仍然不确定程序中究竟是什么引起了错误。

    关于serialization - 当通过远程 EJB 从数据库加载数据时,Java Web Start 应用程序会出现 MARSHAL 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3250383/

    相关文章:

    java - 在基于toplink和struts 2的应用程序中,即使提交数据后数据也会从数据库中消失

    jakarta-ee - 单个 JTA 事务中的多个 XA 数据源

    eclipse - Gradle多项目任务执行行为

    java - Twitter4j:java.lang.IllegalStateException:访问 token 已可用

    java - jackson 序列化忽略负值

    java - 使用序列化java保存游戏(扫雷)进度

    java - 为 JAXB 中生成的每个类生成唯一的可序列化 ID

    java - JPA - 检查另一个表中是否存在 boolean 值值

    c++ - 结构的交互式二进制解码器

    java - HQL 或 Java 持久性查询语言中的 IN 子句