Service Registry 3.1 发行说明

6463868:使用 JDK 1.6 的客户机程序或服务器会导致错误

问题摘要:如果在 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 版。

解决方法:需要两种类型的解决方法,一种用于客户机系统,一种用于服务器。

Procedure执行客户机系统解决方法

如果客户机系统在运行 JDK 1.6,则需要客户机系统解决方法。该解决方法包括以下任务:

  1. 请确保您的类路径包括以下 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>
  2. 将以下 <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"/>

Procedure执行服务器系统解决方法

服务器系统解决方法包括以下任务:

  1. 更改到 Application Server lib 目录。

    在 Solaris 操作系统上:cd /opt/SUNWappserver/appserver/lib

    在 Linux 和 HP-UX 系统上:cd /opt/sun/appserver/lib

  2. 在 Application Server lib 目录中建立两个 SAAJ JAR 文件的备份副本。例如:


    cp saaj-api.jar saaj-api.jar.v1.2
    cp saaj-impl.jar saaj-impl.jar.v1.2
    
  3. 将 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 .
    
  4. 《Service Registry 3.1 Administration Guide》中的“To Use the Application Server Admin Console”所述,登录 Application Server 管理控制台。

  5. 展开“配置”节点。

  6. 展开服务器节点 server-config (Admin Config)

  7. 单击“JVM 设置”。

  8. 单击“JVM 选项”选项卡。

  9. 单击“添加 JVM 选项”。

  10. 在文本字段中键入以下内容:


    -Djavax.xml.soap.MessageFactory=com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl
    
  11. 再次单击“添加 JVM 选项”。

  12. 在文本字段中键入以下内容:


    -Djavax.xml.soap.MetaFactory=com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl
    
  13. 单击“保存”。

  14. 按照《Service Registry 3.1 Administration Guide》中的“To Stop and Restart the Application Server Domain for the Registry”的说明进行操作。