When I tried to run the SDO client tutorial code from the AquaLogic Data Services Platform example, I got an obnoxious stack trace:
Exception in thread "main" com.bea.ld.dsmediator.client.exception.SDOMediatorException: com.bea.ld.dsmediator.client.exception.SDOMediatorException: weblogic.rjvm.PeerGoneException: ; nested exception is:
java.io.EOFException
at com.bea.ld.dsmediator.client.XmlDataServiceBase.invoke(XmlDataServiceBase.java:117)
at com.mm.provisional.bea.sandbox.SdoReader.test(SdoReader.java:34)
at com.mm.provisional.bea.sandbox.SdoReader.main(SdoReader.java:64)
Caused by: com.bea.ld.dsmediator.client.exception.SDOMediatorException: weblogic.rjvm.PeerGoneException: ; nested exception is:
java.io.EOFException
at com.bea.ld.dsmediator.client.XmlDataServiceBase.invokeQuery(XmlDataServiceBase.java:188)
at com.bea.ld.dsmediator.client.XmlDataServiceBase.invoke(XmlDataServiceBase.java:105)
... 2 more
Caused by: weblogic.rjvm.PeerGoneException: ; nested exception is:
java.io.EOFException
at weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:108)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:290)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:247)
at com.bea.ld.Server_ydm4ie_EOImpl_814_WLStub.executeFunction(Unknown Source)
at com.bea.ld.dsmediator.client.XmlDataServiceBase.invokeQuery(XmlDataServiceBase.java:160)
... 3 more
Caused by: java.io.EOFException
at weblogic.rjvm.t3.T3JVMConnection.endOfStream(T3JVMConnection.java:874))
at weblogic.socket.SocketMuxer.deliverExceptionAndCleanup(SocketMuxer.java:583)
at weblogic.socket.SocketMuxer.deliverEndOfStream(SocketMuxer.java:533)
at weblogic.socket.SocketMuxer.readReadySocketOnce(SocketMuxer.java:691)
at weblogic.socket.SocketMuxer.readReadySocket(SocketMuxer.java:638)
at weblogic.socket.JavaSocketMuxer.processSockets(JavaSocketMuxer.java:282)
at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:32)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
On the server side, the stacktrace is:
java.io.InvalidClassException: javax.xml.namespace.QName; local class incompatible: stream classdesc serialVersionUID = 4418622981026545151, local class serialVersionUID = -9120448754896609940
at java.io.ObjectStreamClass.initNonProxy(Ljava.io.ObjectStreamClass;Ljava.lang.Class;Ljava.lang.ClassNotFoundException;Ljava.io.ObjectStreamClass;)V(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Z)Ljava.io.ObjectStreamClass;(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Z)Ljava.io.ObjectStreamClass;(Unknown Source)
at java.io.ObjectInputStream.readObject0(Z)Ljava.lang.Object;(Unknown Source)
at java.io.ObjectInputStream.readObject()Ljava.lang.Object;(Unknown Source)
at weblogic.rjvm.ClassTableEntry.readExternal(Ljava.io.ObjectInput;)V(ClassTableEntry.java:33)
at java.io.ObjectInputStream.readExternalData(Ljava.io.Externalizable;Ljava.io.ObjectStreamClass;)V(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Z)Ljava.lang.Object;(Unknown Source)
at java.io.ObjectInputStream.readObject0(Z)Ljava.lang.Object;(Unknown Source)
at java.io.ObjectInputStream.readObject()Ljava.lang.Object;(Unknown Source)
at weblogic.rjvm.InboundMsgAbbrev.readObject(Lweblogic.common.internal.ChunkedObjectInputStream;)Ljava.lang.Object;(InboundMsgAbbrev.java:65)
at weblogic.rjvm.InboundMsgAbbrev.read(Lweblogic.common.internal.ChunkedObjectInputStream;Lweblogic.rjvm.BubblingAbbrever;)V(InboundMsgAbbrev.java:37)
at weblogic.rjvm.MsgAbbrevJVMConnection.readMsgAbbrevs(Lweblogic.rjvm.MsgAbbrevInputStream;)V(MsgAbbrevJVMConnection.java:210)
at weblogic.rjvm.MsgAbbrevInputStream.readMessageContext()V(MsgAbbrevInputStream.java:235)
at weblogic.rjvm.ConnectionManager.dispatch(Lweblogic.rjvm.MsgAbbrevJVMConnection;Lweblogic.utils.io.Chunk;)V(ConnectionManager.java:735)
at weblogic.rjvm.t3.T3JVMConnection.dispatch()V(T3JVMConnection.java:760)
at weblogic.socket.NTSocketMuxer.processSockets()V(NTSocketMuxer.java:105)
at weblogic.socket.SocketReaderRequest.execute(Lweblogic.kernel.ExecuteThread;)V(SocketReaderRequest.java:32)
at weblogic.kernel.ExecuteThread.execute(Lweblogic.kernel.ExecuteRequest;)V(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:178)
at java.lang.Thread.startThreadFromVM(Ljava.lang.Thread;)V(Unknown Source)
This indicates that the standard Java class QName has changed.
The BEA support pages were no help, but after some experimentation I found out that the error only occurred using JDK 1.5. If I ran under JDK 1.4.2, the problem disappeared. This was the second JDK 1.5 incompatibility that I have observed in the last few days, but I cannot remember what the other one was (should have written a diary entry).