Skip to main content



      Home
Home » Eclipse Projects » EclipseLink » serialUID mismatch on remote EJB call
serialUID mismatch on remote EJB call [message #842381] Thu, 12 April 2012 04:40 Go to next message
Eclipse UserFriend
Hi,

I have been writing some tests for an EJB3 bean when I discovered this problem. The test ought to be simple:

* create an entity manager
* get an object from the database
* call ejb with the object as parameter
* verify the result

however the ejb call resulted in an EOF exception caused by serialVersionUID mismatch of ObjectDefinition.


javax.ejb.EJBException: ; nested exception is: 
	java.io.EOFException; nested exception is: java.io.EOFException
java.io.EOFException
	at weblogic.rjvm.t3.MuxableSocketT3.endOfStream(MuxableSocketT3.java:345)
	at weblogic.socket.SocketMuxer.deliverExceptionAndCleanup(SocketMuxer.java:826)
	at weblogic.socket.SocketMuxer.deliverEndOfStream(SocketMuxer.java:760)
	at weblogic.socket.SocketMuxer.readReadySocketOnce(SocketMuxer.java:941)
	at weblogic.socket.SocketMuxer.readReadySocket(SocketMuxer.java:888)
	at weblogic.socket.JavaSocketMuxer.processSockets(JavaSocketMuxer.java:339)
	at weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:29)
	at weblogic.work.ExecuteRequestAdapter.execute(ExecuteRequestAdapter.java:21)
	at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)
	at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)
javax.ejb.EJBException: ; nested exception is: 
	java.io.EOFException; nested exception is: java.io.EOFException
	at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.unwrapRemoteException(RemoteBusinessIntfProxy.java:121)
	at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:96)
	at $Proxy0.getReportToInsure(Unknown Source)
	at com.***.report.GetReportTest.testGetReport(GetReportTest.java:88)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at junit.framework.TestCase.runTest(TestCase.java:168)
	at junit.framework.TestCase.runBare(TestCase.java:134)
	at junit.framework.TestResult$1.protect(TestResult.java:110)
	at junit.framework.TestResult.runProtected(TestResult.java:128)
	at junit.framework.TestResult.run(TestResult.java:113)
	at junit.framework.TestCase.run(TestCase.java:124)
	at junit.framework.TestSuite.runTest(TestSuite.java:243)
	at junit.framework.TestSuite.run(TestSuite.java:238)
	at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.io.EOFException
	at weblogic.rjvm.t3.MuxableSocketT3.endOfStream(MuxableSocketT3.java:345)
	at weblogic.socket.SocketMuxer.deliverExceptionAndCleanup(SocketMuxer.java:826)
	at weblogic.socket.SocketMuxer.deliverEndOfStream(SocketMuxer.java:760)
	at weblogic.socket.SocketMuxer.readReadySocketOnce(SocketMuxer.java:941)
	at weblogic.socket.SocketMuxer.readReadySocket(SocketMuxer.java:888)
	at weblogic.socket.JavaSocketMuxer.processSockets(JavaSocketMuxer.java:339)
	at weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:29)
	at weblogic.work.ExecuteRequestAdapter.execute(ExecuteRequestAdapter.java:21)
	at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:145)
	at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:117)



After creating the parameter object by hand instead of retrieving it from the db, the ran fine. It seems that the persistence metadata is also serialized and sent to the server.

I tried to call entityManager.clear() after loading the parameter but that did not help either.

Regards,
Gábor
Re: serialUID mismatch on remote EJB call [message #846656 is a reply to message #842381] Mon, 16 April 2012 10:27 Go to previous messageGo to next message
Eclipse UserFriend
Very odd.

Do you have two different versions of the class on the client vs server?
Re: serialUID mismatch on remote EJB call [message #847336 is a reply to message #846656] Tue, 17 April 2012 03:58 Go to previous messageGo to next message
Eclipse UserFriend
No. Both projects are built with maven and the dependencies are the same in the two project. One thing I can think about is that the weblogic server loads its own implementation somehow. The other thing is, I did not find any serialVersionUID filed in DatabaseObjectDefinition, so I it is generated automatically by the jvm but as far as I know that is a compile time operation.
Re: serialUID mismatch on remote EJB call [message #849822 is a reply to message #847336] Thu, 19 April 2012 09:31 Go to previous message
Eclipse UserFriend
Can you try disabling weaving and see if you still get the same error.

Also try setting a serialVersionUID.

It could also be a class loader issue, try to simplify how you are deploying things.
Previous Topic:ClassDescriptor.getTable() NULL
Next Topic:Unable to create query.
Goto Forum:
  


Current Time: Thu Jul 17 04:30:16 EDT 2025

Powered by FUDForum. Page generated in 0.09697 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top