问题摘要:如果在 JDK 1.6 环境中运行 JAXR 客户机程序,或将 Service Registry 部署在正在运行 JDK 1.6 的系统上,则程序执行查询或发布操作时,将导致运行时错误。根本问题在于 JDK 1.6 使用 1.3 版的 SOAP with Attachments API for Java (SAAJ),而 Application Server 使用 1.2 版。
解决方法:需要两种类型的解决方法,一种用于客户机系统,一种用于服务器。
如果客户机运行 JDK 1.6 而服务器运行 JDK 1.5,请执行执行客户机系统解决方法中的步骤。
如果客户机运行 JDK 1.5 而服务器运行 JDK 1.6,请执行执行服务器系统解决方法中的步骤。
如果客户机和服务器都在运行 JDK 1.6,请执行这两种解决方法的步骤。
如果客户机系统在运行 JDK 1.6,则需要客户机系统解决方法。该解决方法包括以下任务:
如果 SAAJ 1.3 JAR 文件还不存在,则将其添加到类路径
在 Ant 构建文件中为客户机程序设置四个系统属性
请确保您的类路径包括以下 JAR 文件:
在 Solaris 操作系统上:
/usr/share/lib/saaj-api.jar /usr/share/lib/saaj-impl.jar
在 Linux 和 HP-UX 系统上:
/opt/sun/share/lib/saaj-api.jar /opt/sun/share/lib/saaj-impl.jar
例如,如果您的 Linux 系统的 Ant 目标包括如下设置,则类路径正确:
<path id="classpath"> <fileset dir="/opt/sun/share/lib"> <include name="*.jar"/> </fileset> ... </path>
将以下 <sysproperty> 标记添加到 build.xml 文件中的 <java> 目标中:
<sysproperty key="javax.xml.soap.MessageFactory" value="com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl"/> <sysproperty key="javax.xml.soap.MetaFactory" value="com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl"/> <sysproperty key="javax.xml.soap.SOAPConnectionFactory" value="com.sun.xml.messaging.saaj.client.p2p.HttpSOAPConnectionFactory"/> <sysproperty key="javax.xml.soap.SOAPFactory" value="com.sun.xml.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl"/>
服务器系统解决方法包括以下任务:
将 SAAJ 1.3 JAR 文件置于 Application Server lib 目录中
添加两个 JVM 选项以设置系统属性
停止并重新启动 Application Server
更改到 Application Server lib 目录。
在 Solaris 操作系统上:cd /opt/SUNWappserver/appserver/lib
在 Linux 和 HP-UX 系统上:cd /opt/sun/appserver/lib
在 Application Server lib 目录中建立两个 SAAJ JAR 文件的备份副本。例如:
cp saaj-api.jar saaj-api.jar.v1.2 cp saaj-impl.jar saaj-impl.jar.v1.2 |
将 SAAJ 1.3 JAR 文件复制到 Application Server lib 目录中。
在 Solaris 操作系统上:
cp /usr/share/lib/saaj-api.jar . cp /usr/share/lib/saaj-impl.jar . |
在 Linux 和 HP-UX 系统上:
cp /opt/sun/share/lib/saaj-api.jar . cp /opt/sun/share/lib/saaj-impl.jar . |
如《Service Registry 3.1 Administration Guide》中的“To Use the Application Server Admin Console”所述,登录 Application Server 管理控制台。
展开“配置”节点。
展开服务器节点 server-config (Admin Config)。
单击“JVM 设置”。
单击“JVM 选项”选项卡。
单击“添加 JVM 选项”。
在文本字段中键入以下内容:
-Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl |
再次单击“添加 JVM 选项”。
在文本字段中键入以下内容:
-Djavax.xml.soap.MetaFactory=com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl |
单击“保存”。