The best place to supplement the CLASSPATH used by the WebLogic server is to edit %WLS_HOME%/common/bin/commEnv.cmd (or .sh on Unix) -- at least if you want the change to apply to all WebLogic domains.
I found a note about running XFire on WebLogic 8.1. It says that XFire requires a newer version of the standard java QName class, and that this can only be accomplished by adding that class to the front of WebLogic's classpath. I wonder if this is the same problem that we were hitting with JDK 1.5?
Following this hint, I determined inspected the serialization versions of the various versions of the class javax.xml.namespace.QName:
- XFire's proposed "fix" version: -9120448754896609940L
- BEA's version in WebLogic.jar: -9120448754896609940L
- Sun JDK 1.5: 4418622981026545151L
I was surprised to see the XFire and BEA versions had the same version. However, using javap on the three files revealed that the XFire and 1.5 versions had a new method, getPrefix().
So... I created a JAR with just the 1.5 version and threw it in JRockITs jre/lib/endorsed directory. The WebLogic server failed to start up with an UnsupportedClassVersionError for version 49.0. Next, I got the 1.5 source for QName and compiled it with a 1.4 compiler, and then put this class in a jar in JRockITs endorsed directory. The server launched, and I was able to use a Java 1.5 client to access an AquaLogic DSP service. Presumably, XFire would work as well, but I haven't tried that yet.