Invalid UIDs in EJB Remote Method - java.util.date & DBTimestamp

I have a java web application that is deployed in two EARs - one for the user interface layer (contains the WAR module) and one for the business layer (contains the EJB module). Both layers are deployed to WebSphere Application Server 7. The layers connect through the session without preserving the state of EJB 3.0 beans. beans are viewed through JNDI.

We use Hibernate to save and the DB2 database.

When a remote EJB call is returned, the following error occurs on the client side:

java.rmi.MarshalException: CORBA MARSHAL 0x4942f896 No; nested exception is: 
    org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : Mismatched serialization UIDs : Source (RepId RMI:java.util.Date:AC117E28FE36587A:686A81014B597419) = 686A81014B597419 whereas Target (RepId RMI:com.ibm.db2.jcc.DBTimestamp:AA774DBE96ECCE99:7AFCE1FB570D419C) = 7AFCE1FB570D419C  vmcid: IBM  minor code: 896  completed: No

An java.util.Dateobject field is returned from Hibernate as a field com.ibm.db2.jcc.DBTimestampthat extends java.sql.Timestamp, which extends java.util.Date. Since this is a subclass java.util.Dateand is serializable, should this not be handled?

I spoke with a more experienced person who said that the probable reason is that the JVM class version or version DBTimestampdiffers between WAS servers for web servers and the business layer. Both servers have the same versions of JVM, WAS, and JAR.

I also have a local WAS 7 server where both levels are deployed on the same server. EJBs are still resolved remotely by calling JNDI on localhost. The application works fine on my local server. The only difference I know of is the other micro-version of WAS, as well as the deployment of both levels on the same server.

? DBTimestamp - ? - ?

, , , - .

+5
1

"" , JAR- JAR EAR -.

, -. , , , .

+2

All Articles