Service Registry 3.1 リリースノート (UNIX 版)

6463868: JDK 1.6 を使用しているクライアントプログラムまたはサーバーでエラーが発生する

問題の概要:JAXR クライアントプログラムが JDK 1.6 環境で実行されている場合、または Service Registry が JDK 1.6 を実行しているシステムに配備されている場合は、プログラムがクエリーを実行したり操作を発行したりするとランタイムエラーが発生します。根本の問題は、Application Server が SOAP with Attachments API for Java (SAAJ) の Version 1.2 を使用しているにもかかわらず、JDK 1.6 が Version 1.3 を使用していることにあります。

対処方法:必要な回避方法には、クライアントシステムに対するものと、サーバーに対するものの 2 種類があります。

Procedureクライアントシステムの回避方法を実行するには

クライアントシステムの回避方法は、クライアントシステムが JDK 1.6 を実行している場合に必要です。この回避方法には、次の作業が含まれます。

  1. クラスパスに次の JAR ファイルが含まれていることを確認します。

    Solaris OS の場合:

    /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. build.xml ファイル内の <java> ターゲットに次の <sysproperty> タグを追加します。

    <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 OS の場合: cd /opt/SUNWappserver/appserver/lib

    Linux および HP-UX システムの場合: cd /opt/sun/appserver/lib

  2. Application Server の lib ディレクトリ内の 2 つの SAAJ JAR ファイルのバックアップコピーを作成します。次に例を示します。


    cp saaj-api.jar saaj-api.jar.v1.2
    cp saaj-impl.jar saaj-impl.jar.v1.2
    
  3. Application Server の lib ディレクトリに SAAJ 1.3 JAR ファイルをコピーします。

    Solaris OS の場合:


    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 管理ガイド』「Application Server 管理コンソールを使用する」の説明に従って、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. 「保存 (Save)」をクリックします。

  14. 『Service Registry 3.1 管理ガイド』「レジストリ用 Application Server ドメインを停止および再起動する」にある説明に従います。