... until the collector arrives ...

This "blog" is really just a scratchpad of mine. There is not much of general interest here. Most of the content is scribbled down "live" as I discover things I want to remember. I rarely go back to correct mistakes in older entries. You have been warned :)

2005-11-30

BEA vs JDK 1.5

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).

2005-11-28

If you attempt to edit an XQuery in an AquaLogic Data Service and you find that you cannot associate an entity with a zone, it might be too late.  The BEA documentation cryptically states that the order that you wire things together might be significant.  In particular, you should create all zones prior to creating any WHERE clauses in the query.

2005-11-18

Thick Web App vs. Thin Web App -- The Back Button Test

There is great debate about when a web application is "thick" versus when it is "thin".  As a result, application thickness has a spectrum rather than a boundary.  However, here is a rule of thumb to help make the determination -- the "back button test".  If the back button doesn't work in a web app, it is almost certainly a thick app.  If it does work, then the app is quite likely to be thin.  The test isn't perfect, but it works quite well in practice.

MS Exchange / Outlook Web Access

Outlook Web Access does not appear to be proxy friendly.  It uses non-standard HTTP verbs.  I observed SEARCH and SUBSCRIBE.  SEARCH appears to be a old proposed extension to WebDAV.  I can't find anything about SUBSCRIBE.  Interestingly, the MS web sites don't seem to have any information about these verbs.  OWA only appears to use these verbs when talking to IE -- when I tried FF, only standard HTTP verbs were used (and the application looks quite different).

Blog Archive