ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド
11g リリース1(10.3.6)
B61647-04
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
 

8 WebLogic Webサービスの旧リリースから10.3.xへのアップグレード

この章では、10.3.xより前のWebLogic Server WebサービスをOracle WebLogic Server 11g リリース1 (10.3.x) Webサービスの実行時環境で動作するようにアップグレードする方法を説明します。

この章では、以下のトピックについて説明します。


注意:

8.1および9.2のWebサービス・ランタイムはこのリリースでもサポートされるため、8.1および9.2のWebLogic Webサービスは変更しなくてもバージョン10.3.xのWebLogic Serverで引き続き実行できますが、8.1および9.2のWebサービス・ランタイムは非推奨になっており、今後のリリースの製品からは削除される予定です。このため、この章の指示に従って、8.1および9.2のWebサービスを10.3.xにアップグレードすることを強くお薦めします。

8.1のWebサービスをバージョン10.3.xのWebLogic Serverで実行するためには、次のシステム・プロパティを更新する必要があります。

System.setProperty('javax.xml.soap.SOAPFactory',
       'weblogic.webservice.core.soap.SOAPFactoryImpl');

10.3.xのWebサービス・アプリケーションがこのシステム・プロパティの設定によって受ける影響を最小限にするには、8.1のWebサービスおよびクライアントを10.3.xのWebサービスおよびクライアントとは別のサーバーにデプロイすることをお薦めします。


9.2または10.0のWebLogic Webサービスを10.3.xにアップグレード

9.2または10.xのWebLogic Webサービスを10.3.xにアップグレードするために必要な手順はありません。該当Webサービスは、変更や再コンパイルを行わずにWebLogic Server 10.3.xに再デプロイできます。

9.0または9.1のWebLogic Webサービスを10.3.xにアップグレード

9.0または9.1のWebサービスで次のいずれかの機能を使用していた場合、WebLogic Server 10.3.xに再デプロイする前にWebサービスを再コンパイルする必要があります。

再コンパイルするには、Webサービスを実装するJWSファイルに対してjwsc Antタスクを再実行するだけです。

9.0または9.1のWebサービスでこれらの機能を使用していなかった場合、変更や再コンパイルを行わずにWebLogic Server 10.3.xに再デプロイできます。

8.1のWebLogic Webサービスを10.3.xにアップグレード

この項では、新しいバージョン10.3.xのWebサービス実行時環境を使用するように8.1 WebLogic Webサービスをアップグレードする方法を説明します。10.3.xのランタイムは、Web Services for Java EE 1.2仕様(http://www.jcp.org/en/jsr/detail?id=109)に基づいています。10.3.xのプログラミング・モデルでは、Web Services Metadata for the Java Platform仕様(JSR-181)(http://www.jcp.org/en/jsr/detail?id=181)で指定される標準JDK 1.5メタデータ・アノテーションを使用します。


注意:

8.1のWebサービス・ランタイムは10.3.xでもサポートされるため、8.1のWebLogic Webサービスは変更しなくてもバージョン10.3.xのWebLogic Serverで引き続き実行できますが、8.1のWebサービス・ランタイムは非推奨になっており、今後のリリースの製品からは削除される予定です。このため、この章の指示に従って、8.1のWebサービスを10.3.xにアップグレードすることを強くお薦めします。

8.1のWebサービスのアップグレードで行うタスクを大まかにまとめると次のようになります。以降の項の手順では、より詳しく説明します。

以下の項では、次のことが前提となっています。

この項では、以下の内容については説明しません。

Javaクラス実装の8.1のWebLogic Webサービスを10.3.xにアップグレード: 主な手順

8.1 Javaクラス実装のWebサービスを、10.3.x WebLogic Webサービス・ランタイムを使用するようにアップグレードするには:

  1. コマンド・ウィンドウを開き、10.3.xのドメイン・ディレクトリのbinサブディレクトリにあるsetDomainEnv.cmd(Windows)またはsetDomainEnv.sh(UNIX)スクリプトを実行して、WebLogic Server 10.3.x環境を設定します。

    WebLogic Serverドメインのデフォルトの場所は、MW_HOME/user_projects/domains/domainNameです。MW_HOMEはOracle製品の最上位のインストール・ディレクトリ、domainNameはドメインの名前です。

  2. プロジェクト・ディレクトリを作成します。

       prompt> mkdir /myExamples/upgrade_pojo
    
  3. プロジェクト・ディレクトリの下に、srcディレクトリと、古い8.1のJavaクラスに対応する新しい10.3.xのJWSファイル(この手順で後述)のパッケージ名に相当するサブディレクトリを作成します。

       prompt> cd /myExamples/upgrade_pojo
        prompt> mkdir src/examples/webservices/upgrade_pojo
    
  4. 8.1のWebサービスを実装する古いJavaクラスを、作業ディレクトリのsrc/examples/webservices/upgrade_pojoディレクトリにコピーします。必要に応じてファイル名を変更してください。

  5. 次の手順に従ってJavaファイルを編集します。具体的な例については、「8.1のJavaファイルと対応する10.3.xのJWSファイルの例」にある新旧のサンプルJavaファイルを参照してください。

    1. 必要に応じて、新しい10.3.xのソース環境を反映するようにJavaファイルのパッケージ名とクラス名を変更します。

    2. import文を追加して、標準およびWebLogic固有のJWSアノテーションがインポートされるようにします。

    3. 少なくとも、次のJWSアノテーションを追加します。

      • JWSファイルがWebサービスを実装することを指定する標準の@WebServiceアノテーション(Javaクラス・レベルで追加)。

        以下のアノテーションも追加することをお薦めします。

      • Webサービスの種類(document-literal-wrapped、RPC-encodedなど)を指定する標準の@SOAPBindingアノテーション(クラス・レベルで追加)。

      • デプロイされたWebサービスを呼び出すURLで使用されるコンテキストとサービスURIを指定するWebLogic固有の@WLHttpTransportアノテーション(クラス・レベルで追加)。

      • 標準の@WebMethodアノテーション(Webサービス操作として公開されるメソッドごとにメソッド・レベルで追加)。

        JavaファイルでのJWSアノテーションの使用に関する概要については、第4章「JWSファイルのプログラミング」を参照してください。

    4. 10.3.xに繰越す8.1 Webサービス機能によっては、アノテーションをJWSファイルに追加する必要があります。8.1では、このような機能の多くはservicegen属性を使用して構成されていました。「servicegen属性とJWSアノテーションまたはjwsc属性のマッピング」の表に、8.1でservicegenの属性を使用して有効にしていた機能に対応するJWSアノテーションをまとめてあります(相当するアノテーションがある場合のみ)。

  6. 8.1のWebサービスのビルドに使用していた古いbuild.xmlファイルを10.3.xの作業ディレクトリにコピーします。

  7. Ant build.xmlファイルを更新して、servicegenのかわりにjwsc Antタスクとその他のサポート・タスクが実行されるようにします。

    Antビルド・ファイルでbuild-serviceなどの新しいターゲットを作成し、前の手順で作成した新しいJWSファイルをコンパイルするjwsc Antタスク呼出しを追加することをお薦めします。このターゲットがいったん正常に機能すれば、古いservicegen Antタスクは削除できます。

    次に示す手順は、build.xmlファイルを更新する際の主な手順です。詳細な手順については、第3章「WebLogic Webサービスの開発」で説明する標準の反復開発プロセスを参照してください。

    次の各手順の例については、「8.1と更新された10.3.xのAntビルド・ファイルの例(Javaクラス実装のWebサービス)」を参照してください。

    1. jwsc taskdefをbuild.xmlファイルに追加します。

    2. build-serviceターゲットを作成し、この後の手順に従って10.3.xのWebサービスをビルドするのに必要なタスクを追加します。

    3. jwscタスクをビルド・ファイルに追加します。srdir属性にsrcディレクトリ(この例では/myExamples/upgrade_pojo/src)を設定し、destdir属性に前の手順で作成したエンタープライズ・アプリケーションのルート・ディレクトリを設定します。

      <jws>子要素のfile属性に、前の手順で作成した新しいJWSファイルの名前を指定します。

      10.3.xに繰越す8.1 Webサービス機能によっては、追加属性をjwscタスクに指定する必要があります。8.1では、このような機能の多くはservicegen属性を使用して構成されていました。「servicegen属性とJWSアノテーションまたはjwsc属性のマッピング」の表で、servicegenの属性を使用して有効にしていた機能に相当するjwsc属性があるかどうかについて説明しています。

  8. build-service Antターゲットを実行します。すべてのタスクを正しく完了すると、アップグレードされた10.3.xのWebサービスがエンタープライズ・アプリケーションに含まれます。

Webサービスのデプロイとテストの詳細は、「WebLogic Webサービスのデプロイとアンデプロイ」および「WebサービスのWSDLの参照」を参照してください。

次の各項に示すサンプルJavaコードの場合、アップグレードされた10.3.xのWebサービスのWSDLを呼び出すURLは次のようになります。

http://host:port/upgradePOJO/HelloWorld?WSDL

8.1のJavaファイルと対応する10.3.xのJWSファイルの例

次のサンプルJavaクラスが8.1のWebサービスを実装していたものと仮定します。

package examples.javaclass;
/**
  * Simple Java class that implements the HelloWorld Web service.   It takes
  * as input an integer and a String, and returns a message that includes these
  * two parameters.
  */
public final class HelloWorld81 {
  /**
    * Returns a text message that includes the integer and String input
    * parameters.
    *
    */
   public String sayHello(int num, String s) {
    System.out.println("sayHello operation has been invoked with arguments " + s + " and " + num);
    String returnValue = "This message brought to you by the letter "+s+" and the number "+num;
    return returnValue;
   }
}

これに対応するものとして、Javaクラス実装の10.3.x WebサービスのJWSファイルを次に示します(相違点が太字で示されています)。一部のJWSアノテーションの値が、「8.1と更新された10.3.xのAntビルド・ファイルの例(Javaクラス実装のWebサービス)」に示す8.1のservicegen Antタスクの属性から取得されている点に注意してください。

package examples.webservices.upgrade_pojo;
// Import standard JWS annotations
import javax.jws.WebService;
 import javax.jws.WebMethod;
 import javax.jws.soap.SOAPBinding;
// Import WebLogic JWS anntoation
import weblogic.jws.WLHttpTransport;
/**
  * Simple Java class that implements the HelloWorld92 Web service.   It takes
  * as input an integer and a String, and returns a message that includes these
  * two parameters.
  */
@WebService(name="HelloWorld92PortType", serviceName="HelloWorld",
             targetNamespace="http://example.org")
@SOAPBinding(style=SOAPBinding.Style.DOCUMENT,
              use=SOAPBinding.Use.LITERAL,
              parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
@WLHttpTransport(contextPath="upgradePOJO", serviceUri="HelloWorld",
                  portName="HelloWorld92Port")
public class HelloWorld92Impl {
  /**
    * Returns a text message that includes the integer and String input
    * parameters.
    *
    */
  @WebMethod()
   public String sayHello(int num, String s) {
    System.out.println("sayHello operation has been invoked with arguments " + s + " and " + num);
    String returnValue = "This message brought to you by the letter "+s+" and the number "+num;
    return returnValue;
   }
 }

8.1と更新された10.3.xのAntビルド・ファイルの例(Javaクラス実装のWebサービス)

次の単純なbuild.xmlファイルでは、8.1でservicegen Antタスクを使用してWebLogic Webサービスをビルドする方法を示します。この例では、8.1のWebサービスを実装するJavaファイルがすでにexamples.javaclass.HelloWorld81クラスにコンパイルされています。

<project name="javaclass-webservice" default="all" basedir=".">
  <!-- set global properties for this build -->
   <property name="source" value="."/>
   <property name="build" value="${source}/build"/>
   <property name="war_file" value="HelloWorldWS.war" />
   <property name="ear_file" value="HelloWorldApp.ear" />
   <property name="namespace" value="http://examples.org" />
  <target name="all" depends="clean, ear"/>
  <target name="clean">
     <delete dir="${build}"/>
   </target>
  <!-- example of old 8.1 servicegen call to build Web Service -->
  <target name="ear">
     <servicegen
        destEar="${build}/${ear_file}"
        warName="${war_file}">
        <service
          javaClassComponents="examples.javaclass.HelloWorld81"
          targetNamespace="${namespace}"
          serviceName="HelloWorld"
          serviceURI="/HelloWorld"
          generateTypes="True"
          expandMethods="True">
        </service>
      </servicegen>
   </target>
</project>

これに対応するものとして、jwsc Antタスクを呼び出して10.3.xのWebサービスをビルドするbuild.xmlファイルを次に示します(この項で説明する該当タスクは太字で示してあります)。この例では、10.3.xのWebサービスを実装する新しいJWSファイルにHelloWorld92Impl.javaという名前が付けられています。

<project name="webservices-upgrade_pojo" default="all">
  <!-- set global properties for this build -->
  <property name="wls.username" value="weblogic" />
   <property name="wls.password" value="weblogic" />
   <property name="wls.hostname" value="localhost" />
   <property name="wls.port" value="7001" />
   <property name="wls.server.name" value="myserver" />
  <property name="ear.deployed.name" value="upgradePOJOEar" />
   <property name="example-output" value="output" />
   <property name="ear-dir" value="${example-output}/upgradePOJOEar" />
  <taskdef name="jwsc"
     classname="weblogic.wsee.tools.anttasks.JwscTask" />
  <taskdef name="wldeploy"
     classname="weblogic.ant.taskdefs.management.WLDeploy"/>
  <target name="all" depends="clean,build-service,deploy" />
  <target name="clean" depends="undeploy">
     <delete dir="${example-output}"/>
   </target>
  <target name="build-service">
    <jwsc
       srcdir="src"
       destdir="${ear-dir}">
      <jws file="examples/webservices/upgrade_pojo/HelloWorld92Impl.java" />
    </jwsc>
  </target>
  <target name="deploy">
     <wldeploy action="deploy" name="${ear.deployed.name}"
       source="${ear-dir}" user="${wls.username}"
       password="${wls.password}" verbose="true"
       adminurl="t3://${wls.hostname}:${wls.port}"
       targets="${wls.server.name}" />
   </target>
  <target name="undeploy">
     <wldeploy action="undeploy" name="${ear.deployed.name}"
       failonerror="false"
       user="${wls.username}" password="${wls.password}" verbose="true"
       adminurl="t3://${wls.hostname}:${wls.port}"
       targets="${wls.server.name}" />
   </target>
</project>

EJB実装の8.1のWebLogic Webサービスを10.3.xにアップグレード: 主な手順

次の手順では、10.3.xのWebLogic Webサービス・ランタイムを使用するようにEJB実装の8.1 Webサービスをアップグレードする方法について説明します。

10.3.xのWebサービスのプログラミング・モデルは、Webサービスの基底の実装を隠す点で8.1のモデルとはまったく異なります。WebサービスをJavaクラスで実装するかEJBで実装するかを前もって指定するのではなく、JWSファイルに明示的にjavax.ejb.SessionBeanを実装しないかぎり(一般的には実装しない)、jwsc Antタスクで常にプレーンJavaクラス実装が選択されます。このため、8.1のWebサービスは明示的にEJBで実装されていましたが、次の手順ではEJBクラスをインポートする方法やEJBGenを使用する方法は示されていません。かわりに、EJB実装の8.1のWebサービスに対応する10.3.xの標準的なJWSファイルを作成する方法を示します。

  1. コマンド・ウィンドウを開き、10.3.xのドメイン・ディレクトリのbinサブディレクトリにあるsetDomainEnv.cmd(Windows)またはsetDomainEnv.sh(UNIX)スクリプトを実行して、WebLogic Server 10.3.x環境を設定します。

    WebLogic Serverドメインのデフォルトの場所は、MW_HOME/user_projects/domains/domainNameです。MW_HOMEはOracle製品の最上位のインストール・ディレクトリ、domainNameはドメインの名前です。

  2. プロジェクト・ディレクトリを作成します。

       prompt> mkdir /myExamples/upgrade_ejb
    
  3. プロジェクト・ディレクトリの下に、srcディレクトリと、8.1のEJB実装に対応する新しい10.3.xのJWSファイル(この手順で後述)のパッケージ名に相当するサブディレクトリを作成します。

       prompt> cd /myExamples/upgrade_ejb
        prompt> mkdir src/examples/webservices/upgrade_ejb
    
  4. javax.ejb.SessionBeanを実装していた8.1 EJB Beanファイルを、作業ディレクトリのsrc/examples/webservices/upgrade_ejbディレクトリにコピーします。必要に応じてファイル名を変更してください。


    注意:

    8.1のホームおよびリモートEJBファイルをコピーする必要はありません。

  5. 次の手順に従ってEJB Beanファイルを編集します。具体的な例については、「8.1のEJBファイルと対応する10.3.xのJWSファイルの例」にある新旧のサンプルJavaファイルを参照してください。

    1. 必要に応じて、新しい10.3.xのソース環境を反映するようにJavaファイルのパッケージ名とクラス名を変更します。

    2. 必要に応じて、EJBクラス(javax.ejb.*)をインポートするimport文を削除します。これらのクラスは、アップグレード後のJWSファイルでは必要ありません。

    3. import文を追加して、標準およびWebLogic固有のJWSアノテーションがインポートされるようにします。

    4. JWSファイルのクラス宣言からimplements SessionBeanコードを削除して、それ以降javax.ejb.SessionBeanが実装されないようにします。

    5. EJB固有のメソッドをすべて削除します。

      • ejbActivate()

      • ejbRemove()

      • ejbPassivate()

      • ejbCreate()

    6. 少なくとも、次のJWSアノテーションを追加します。

      • JWSファイルがWebサービスを実装することを指定する標準の@WebServiceアノテーション(Javaクラス・レベルで追加)。

        以下のアノテーションも追加することをお薦めします。

      • Webサービスの種類(document-literal-wrapped、RPC-encodedなど)を指定する標準の@SOAPBindingアノテーション(クラス・レベルで追加)。

      • デプロイされたWebサービスを呼び出すURLで使用されるコンテキストとサービスURIを指定するWebLogic固有の@WLHttpTransportアノテーション(クラス・レベルで追加)。

      • 標準の@WebMethodアノテーション(Webサービス操作として公開されるメソッドごとにメソッド・レベルで追加)。

      JavaファイルでのJWSアノテーションの使用に関する概要については、第4章「JWSファイルのプログラミング」を参照してください。

    7. 10.3.xに繰越す8.1 Webサービス機能によっては、アノテーションをJWSファイルに追加する必要があります。8.1では、このような機能の多くはservicegen属性を使用して構成されていました。「servicegen属性とJWSアノテーションまたはjwsc属性のマッピング」の表に、8.1でservicegenの属性を使用して有効にしていた機能に対応するJWSアノテーションをまとめてあります(相当するアノテーションがある場合のみ)。

  6. 8.1のWebサービスのビルドに使用していた古いbuild.xmlファイルを10.3.xの作業ディレクトリにコピーします。

  7. Ant build.xmlファイルを更新して、servicegenのかわりにjwsc Antタスクとその他のサポート・タスクが実行されるようにします。

    Antビルド・ファイルでbuild-serviceなどの新しいターゲットを作成し、前の手順で作成した新しいJWSファイルをコンパイルするjwsc Antタスク呼出しを追加することをお薦めします。このターゲットがいったん正常に機能すれば、古いservicegen Antタスクは削除できます。

    次に示す手順は、build.xmlファイルを更新する際の主な手順です。詳細な手順については、標準の反復開発プロセスを参照してください。

    次の各手順の例については、「8.1と更新された10.3.xのAntビルド・ファイルの例(EJB実装の8.1のWebサービス)」を参照してください。

    1. jwsc taskdefをbuild.xmlファイルに追加します。

    2. build-serviceターゲットを作成し、この後の手順に従って10.3.xのWebサービスをビルドするのに必要なタスクを追加します。

    3. jwscタスクをビルド・ファイルに追加します。srdir属性にsrcディレクトリ(この例では/myExamples/upgrade_ejb/src)を設定し、destdir属性に前の手順で作成したエンタープライズ・アプリケーションのルート・ディレクトリを設定します。

      <jws>子要素のfile属性に、前の手順で作成した新しいJWSファイルの名前を指定します。

      10.3.xに繰越す8.1 Webサービス機能によっては、追加属性をjwscタスクに指定する必要があります。8.1では、このような機能の多くはservicegen属性を使用して構成されていました。「servicegen属性とJWSアノテーションまたはjwsc属性のマッピング」の表に、servicegenの属性を使用して有効にしていた機能に対応するjwsc属性があるかどうかを示しています。

  8. build-service Antターゲットを実行します。すべてのタスクを正しく完了すると、アップグレードされた10.3.xのWebサービスがエンタープライズ・アプリケーションに含まれます。

Webサービスのデプロイとテストの詳細は、「WebLogic Webサービスのデプロイとアンデプロイ」および「WebサービスのWSDLの参照」を参照してください。

次の各項に示すサンプルJavaコードの場合、アップグレードされた10.3.xのWebサービスのWSDLを呼び出すURLは次のようになります。

http://host:port/upgradeEJB/HelloWorldService?WSDL

8.1のEJBファイルと対応する10.3.xのJWSファイルの例

次の3つの項に示すBean、ホームおよびリモートのクラスとインタフェースが8.1のステートレス・セッションEJB(つまり8.1のWebサービス)を実装していたものと仮定します。

「対応する10.3.xのJWSファイル」に、対応する10.3.xのJWSファイルを示します。8.1のクラスと10.3.xのクラスの相違点は太字で示してあります。一部のJWSアノテーションの値が、「8.1と更新された10.3.xのAntビルド・ファイルの例(EJB実装の8.1のWebサービス)」に示す8.1のservicegen Antタスクの属性から取得されている点に注意してください。

8.1 SessionBeanクラス
package examples.statelessSession;
import javax.ejb.CreateException;
 import javax.ejb.SessionBean;
 import javax.ejb.SessionContext;
/**
  * HelloWorldBean is a stateless session EJB.  It has a single method,
  * sayHello(), that takes an integer and a String and returns a String.
  * <p>
  * The sayHello() method is the public operation of the Web service based on
  * this EJB.
   */
public class HelloWorldBean81 implements SessionBean {
  private static final boolean VERBOSE = true;
   private SessionContext ctx;
  // You might also consider using WebLogic's log service
   private void log(String s) {
     if (VERBOSE) System.out.println(s);
   }
  /**
    *   Single EJB business method.
    */
   public String sayHello(int num, String s) {
    System.out.println("sayHello in the HelloWorld EJB has "+
       "been invoked with arguments " + s + " and " + num);
    String returnValue = "This message brought to you by the "+
       "letter "+s+" and the number "+num;
    return returnValue;
   }
  /**
    * This method is required by the EJB Specification,
    * but is not used by this example.
    *
    */
   public void ejbActivate() {
     log("ejbActivate called");
   }
  /**
    * This method is required by the EJB Specification,
    * but is not used by this example.
    *
    */
   public void ejbRemove() {
     log("ejbRemove called");
   }
  /**
    * This method is required by the EJB Specification,
    * but is not used by this example.
    *
    */
   public void ejbPassivate() {
     log("ejbPassivate called");
   }
  /**
    * Sets the session context.
    *
    * @param ctx SessionContext Context for session
    */
   public void setSessionContext(SessionContext ctx) {
     log("setSessionContext called");
     this.ctx = ctx;
   }
  /**
    * This method is required by the EJB Specification,
    * but is not used by this example.
    *
    */
   public void ejbCreate () throws CreateException {
     log("ejbCreate called");
   }
}
8.1リモート・インタフェース
package examples.statelessSession;
import java.rmi.RemoteException;
 import javax.ejb.EJBObject;
/**
  * The methods in this interface are the public face of HelloWorld.
  * The signatures of the methods are identical to those of the EJBean, except
  * that these methods throw a java.rmi.RemoteException.
   */
public interface HelloWorld81 extends EJBObject {
  /**
    * Simply says hello from the EJB
    *
    * @param num               int number to return
    * @param s                 String string to return
    * @return                  String returnValue
    * @exception               RemoteException if there is
    *                          a communications or systems failure
    */
   String sayHello(int num, String s)
     throws RemoteException;
 }
8.1 EJBホーム・インタフェース
package examples.statelessSession;
import java.rmi.RemoteException;
 import javax.ejb.CreateException;
 import javax.ejb.EJBHome;
/**
  * This interface is the Home interface of the HelloWorld stateless session EJB.
  */
 public interface HelloWorldHome81 extends EJBHome {
  /**
    * This method corresponds to the ejbCreate method in the
    * HelloWorldBean81.java file.
    */
   HelloWorld81 create()
     throws CreateException, RemoteException;
}
対応する10.3.xのJWSファイル

8.1のファイルと10.3.xのファイルの相違点は太字で示してあります。一部のJWSアノテーションの値は、「8.1と更新された10.3.xのAntビルド・ファイルの例(EJB実装の8.1のWebサービス)」に示す8.1のservicegen Antタスクの属性から取得されています。

package examples.webservices.upgrade_ejb;
// Import the standard JWS annotations
import javax.jws.WebMethod;
 import javax.jws.WebService;
 import javax.jws.soap.SOAPBinding;
// Import the WebLogic specific annotation
import weblogic.jws.WLHttpTransport;
// Class-level annotations
@WebService(name="HelloWorld92PortType", serviceName="HelloWorldService",
             targetNamespace="http://example.org")
@SOAPBinding(style=SOAPBinding.Style.DOCUMENT,
              use=SOAPBinding.Use.LITERAL,
              parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
@WLHttpTransport(contextPath="upgradeEJB", serviceUri="HelloWorldService",
                  portName="HelloWorld92Port")
/**
  * HelloWorld92Impl is the JWS equivalent of the HelloWorld81 EJB that
  * implemented the 8.1 Web Service.  It has a single method,
  * sayHello(), that takes an integer and a String and returns a String.
  */
public class HelloWorld92Impl {
  /** the sayHello method will become the public operation of the Web
    *  Service.
    */
  @WebMethod()
   public String sayHello(int num, String s) {
    System.out.println("sayHello in the HelloWorld92 Web Service has "+
       "been invoked with arguments " + s + " and " + num);
    String returnValue = "This message brought to you by the "+
       "letter "+s+" and the number "+num;
    return returnValue;
  }
}

8.1と更新された10.3.xのAntビルド・ファイルの例(EJB実装の8.1のWebサービス)

次の単純なbuild.xmlファイルでは、8.1でservicegen Antタスクを使用してEJB実装のWebLogic Webサービスをビルドする方法を示します。この例の後に、jwsc Antタスクを呼び出して10.3.xのWebサービスをビルドする場合の、対応するbuild.xmlファイルを示します。

<project name="ejb-webservice" default="all" basedir=".">
  <!-- set global properties for this build -->
   <property name="source" value="."/>
   <property name="build" value="${source}/build"/>
   <property name="ejb_file" value="HelloWorldWS.jar" />
   <property name="war_file" value="HelloWorldWS.war" />
   <property name="ear_file" value="HelloWorldApp.ear" />
   <property name="namespace" value="http://examples.org" />
  <target name="all" depends="clean,ear"/>
  <target name="clean">
     <delete dir="${build}"/>
   </target>
  <!-- example of old 8.1 servicegen call to build Web Service -->
  <target name="ejb">
     <delete dir="${build}" />
     <mkdir dir="${build}"/>
     <mkdir dir="${build}/META-INF"/>
     <copy todir="${build}/META-INF">
       <fileset dir="${source}">
         <include name="ejb-jar.xml"/>
       </fileset>
     </copy>
     <javac srcdir="${source}" includes="HelloWorld*.java" 
            destdir="${build}" />
     <jar jarfile="${ejb_file}" basedir="${build}" />
     <wlappc source="${ejb_file}" />
   </target>
 <target name="ear" depends="ejb">
    <servicegen
       destEar="${build}/${ear_file}"
       warName="${war_file}">
       <service
         ejbJar="${ejb_file}"
         targetNamespace="${namespace}"
         serviceName="HelloWorldService"
         serviceURI="/HelloWorldService"
         generateTypes="True"
         expandMethods="True">
       </service>
     </servicegen>
  </target>
</project>

これに対応するものとして、jwsc Antタスクを呼び出して10.3.xのWebサービスをビルドするbuild.xmlファイルを次に示します(この項で説明する該当タスクは太字で示してあります)。

<project name="webservices-upgrade_ejb" default="all">
  <!-- set global properties for this build -->
  <property name="wls.username" value="weblogic" />
   <property name="wls.password" value="weblogic" />
   <property name="wls.hostname" value="localhost" />
   <property name="wls.port" value="7001" />
   <property name="wls.server.name" value="myserver" />
  <property name="ear.deployed.name" value="upgradeEJB" />
   <property name="example-output" value="output" />
   <property name="ear-dir" value="${example-output}/upgradeEJB" />
  <taskdef name="jwsc"
     classname="weblogic.wsee.tools.anttasks.JwscTask" />
  <taskdef name="wldeploy"
     classname="weblogic.ant.taskdefs.management.WLDeploy"/>
  <target name="all" depends="clean,build-service,deploy" />
  <target name="clean" depends="undeploy">
     <delete dir="${example-output}"/>
   </target>
  <target name="build-service">
    <jwsc
       srcdir="src"
       destdir="${ear-dir}">
      <jws file="examples/webservices/upgrade_ejb/HelloWorld92Impl.java" />
    </jwsc>
  </target>
  <target name="deploy">
     <wldeploy action="deploy" name="${ear.deployed.name}"
       source="${ear-dir}" user="${wls.username}"
       password="${wls.password}" verbose="true"
       adminurl="t3://${wls.hostname}:${wls.port}"
       targets="${wls.server.name}" />
   </target>
  <target name="undeploy">
     <wldeploy action="undeploy" name="${ear.deployed.name}"
       failonerror="false"
       user="${wls.username}" password="${wls.password}" verbose="true"
       adminurl="t3://${wls.hostname}:${wls.port}"
       targets="${wls.server.name}" />
   </target>
</project>

servicegen属性とJWSアノテーションまたはjwsc属性のマッピング

次の表に、8.1のservicegen Antタスクの属性と、それに対応する10.3.xのJWSアノテーションまたはjwsc属性を示します。

最初の列には、メインのservicegen Antタスクの属性と、servicegenの4つの子要素(<service><client><handlerChain>、および<security>)の属性が混在しています。

10.3.xのJWSアノテーションとjwsc Antタスクの詳細は、『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービス・リファレンス』のJWSアノテーション・リファレンスの項とjwscに関する項を参照してください。

表8-1 servicegen属性とJWSアノテーションまたはjwsc属性のマッピング

servicegenまたはservicegenの子要素の属性 対応するJWSアノテーションまたはjwsc属性

contextURI

WebLogic固有の@WLHttpTransportアノテーションのcontextPath属性。

注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。

destEAR

jwsc Antタスクのdestdir属性。

keepGenerated

jwsc AntタスクのkeepGenerated属性。

mergeWithExistingWS

相当するものはありません。

overwrite

相当するものはありません。

warName

jwsc Antタスクの<jws>子要素のname属性。

ejbJAR

(service子要素の属性)

jwsc Antタスクは、コンパイルされたEJBまたはJavaクラスからではなく、JWSファイルからWebサービス・アーティファクトを生成するため、直接的に対応するものはありません。

間接的に対応するのは、JWSファイルの名前を指定するjwsc Antタスクの<jws>子要素のfile属性。

excludeEJBs

(service子要素の属性)

相当するものはありません。

expandMethods

(service子要素の属性)

相当するものはありません。

generateTypes

(service子要素の属性)

相当するものはありません。

ignoreAuthHeader

(service子要素の属性)

相当するものはありません。

includeEJBs

(service子要素の属性)

相当するものはありません。

javaClassComponents

(service子要素の属性)

jwsc Antタスクは、コンパイルされたEJBまたはJavaクラスからではなく、JWSファイルからWebサービス・アーティファクトを生成するため、直接的に対応するものはありません。

間接的に対応するのは、JWSファイルの名前を指定するjwsc Antタスクの<jws>子要素のfile属性。

JMSAction

(service子要素の属性)

JMS実装のWebサービスは10.3.xリリースではサポートされないため、対応するものはありません。

JMSConnectionFactory

(service子要素の属性)

JMS実装のWebサービスは10.3.xリリースではサポートされないため、対応するものはありません。

JMSDestination

(service子要素の属性)

JMS実装のWebサービスは10.3.xリリースではサポートされないため、対応するものはありません。

JMSDestinationType

(service子要素の属性)

JMS実装のWebサービスは10.3.xリリースではサポートされないため、対応するものはありません。

JMSMessageType

(service子要素の属性)

JMS実装のWebサービスは10.3.xリリースではサポートされないため、対応するものはありません。

JMSOperationName

(service子要素の属性)

JMS実装のWebサービスは10.3.xリリースではサポートされないため、対応するものはありません。

protocol

(service子要素の属性)

以下のいずれかのWebLogic固有アノテーション。

  • @WLHttpTransport

  • @WLJmsTransport

注意: これらはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。

serviceName

(service子要素の属性)

標準の@WebServiceアノテーションのserviceName属性。

serviceURI

(service子要素の属性)

WebLogic固有の@WLHttpTransportまたは@WLJmsTransportアノテーションのserviceUri属性。

注意: これらはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。

style

(service子要素の属性)

標準の@SOAPBindingアノテーションのstyle属性。

typeMappingFile

(service子要素の属性)

相当するものはありません。

targetNamespace

(service子要素の属性)

標準の@WebServiceアノテーションのtargetNamespace属性。

userSOAP12

(service子要素の属性)

WebLogic固有の@weblogic.jws.Binding JWSアノテーションのvalue属性。

注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。

clientJarName

(client子要素の属性)

相当するものはありません。

packageName

(client子要素の属性)

直接的に相当するものはありません。

クライアント側Javaコードおよびアーティファクトを生成するには、clientgen AntタスクのpackageName属性を使用します。

saveWSDL

(client子要素の属性)

相当するものはありません。

userServerTypes

(client子要素の属性)

相当するものはありません。

handlers

(handlerChain子要素の属性)

標準の@HandlerChainまたは@SOAPMessageHandlersアノテーション。

name

(handlerChain子要素の属性)

標準の@HandlerChainまたは@SOAPMessageHandlersアノテーション。

duplicateElimination

(reliability子要素の属性)

直接的に相当するものはありません。

Webサービスの信頼性のあるメッセージングのポリシー・アサーションを含むWS-Policyファイルを指定するには、WebLogic固有の@Policy属性を使用します。

『Oracle Fusion Middleware Oracle WebLogic Server JAX-RPCを使用したWebサービスの高度な機能のプログラミング』の「Webサービスの信頼性のあるメッセージングの使用」を参照してください。

persistDuration

(reliability子要素の属性)

直接的に相当するものはありません。

Webサービスの信頼性のあるメッセージングのポリシー・アサーションを含むWS-Policyファイルを指定するには、WebLogic固有の@Policy属性を使用します。

このリリースでは、対応する属性はJAX-RPC Webサービスに対してのみ有効です。『Oracle Fusion Middleware Oracle WebLogic Server JAX-RPCを使用したWebサービスの高度な機能のプログラミング』の「Webサービスの信頼性のあるメッセージングの使用」を参照してください。

enablePasswordAuth

(security子要素の属性)

直接的に相当するものはありません。

メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の@Policy属性を使用します。

注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。

『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの保護』の「メッセージ・レベルのセキュリティの構成」を参照してください。

encryptKeyName

(security子要素の属性)

直接的に相当するものはありません。

メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の@Policy属性を使用します。

注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。

『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの保護』の「メッセージ・レベルのセキュリティの構成」を参照してください。

encryptKeyPass

(security子要素の属性)

直接的に相当するものはありません。

メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の@Policy属性を使用します。

注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。

『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの保護』の「メッセージ・レベルのセキュリティの構成」を参照してください。

password

(security子要素の属性)

直接的に相当するものはありません。

メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の@Policy属性を使用します。

『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの保護』の「メッセージ・レベルのセキュリティの構成」を参照してください。

signKeyName

(security子要素の属性)

直接的に相当するものはありません。

メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の@Policy属性を使用します。

注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。

『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの保護』の「メッセージ・レベルのセキュリティの構成」を参照してください。

signKeyPass

(security子要素の属性)

直接的に相当するものはありません。

メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の@Policy属性を使用します。

注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。

『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの保護』の「メッセージ・レベルのセキュリティの構成」を参照してください。

username

(security子要素の属性)

直接的に相当するものはありません。

メッセージ・レベルのセキュリティ・ポリシーのアサーションを含むWS-Policyファイルを指定するには、WebLogic固有の@Policy属性を使用します。

注意: これはWebLogic固有のアノテーションであるため、JAX-RPC Webサービスの生成にのみ使用可能であり、JAX-WS Webサービスの生成には使用できません。

『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの保護』の「メッセージ・レベルのセキュリティの構成」を参照してください。