[ https://issues.apache.org/jira/browse/OPENJPA-559?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Albert Lee resolved OPENJPA-559. -------------------------------- Resolution: Fixed > java.rmi.MarshalException due to mismatched serialization UIDs of: Source > (RepId RMI:org.apache.openjpa.kernel.DetachedStateManager > ----------------------------------------------------------------------------------------------------------------------------------- > > Key: OPENJPA-559 > URL: https://issues.apache.org/jira/browse/OPENJPA-559 > Project: OpenJPA > Issue Type: Bug > Components: kernel > Affects Versions: 1.0.3, 1.1.0 > Reporter: Albert Lee > Assignee: Albert Lee > Fix For: 1.0.3, 1.1.0 > > > When a JSE client requests JPA function via components in an application > server, in some combination of client/server operating environment, the > client request failed with the following exception even if the client and > server are using the same level of OpenJPA code: > java.rmi.MarshalException. Error Message is:CORBA MARSHAL 0x4942f896 No; > nested exception is: > org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : > Mismatched > serialization UIDs : Source (RepId > RMI:org.apache.openjpa.kernel.DetachedStateManager > :C7D15E4B35987A3F:766FF0A32408BC7A) = 766FF0A32408BC7A whereas Target (RepId > RMI:org.apache.openjpa.kernel.DetachedStateManager:47697E6CFD3BF01F:548BD6248B0927C4) > = 548BD6248B0927C4 > One of the test environment combination that we have observed this exception > is a Win32 client and a SunOS application server configuration. The client > uses IBM JDK and SunOS uses Sun JDK. > From the JavaDoc Serializable class: > "If a serializable class does not explicitly declare a serialVersionUID, then > the serialization runtime will calculate a default serialVersionUID value for > that class based on various aspects of the class, as described in the > Java(TM) Object Serialization Specification. However, it is strongly > recommended that all serializable classes explicitly declare serialVersionUID > values, since the default serialVersionUID computation is highly sensitive to > class details that may vary depending on compiler implementations, and can > thus result in unexpected InvalidClassExceptions during deserialization. > Therefore, to guarantee a consistent serialVersionUID value across different > java compiler implementations, a serializable class must declare an explicit > serialVersionUID value. It is also strongly advised that explicit > serialVersionUID declarations use the private modifier where possible, since > such declarations apply only to the immediately declaring > class--serialVersionUID fields are not useful as inherited members." > Adding the following in DetachedStateManager resolved the problem. > private static final long serialVersionUID = 6092198373388527556L; > Albert Lee. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.