WebLogic Web サービス プログラマーズ ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

WebLogic Web サービスの旧リリースから 9.2 へのアップグレード

以下の節では、9.2 より前のリリースの WebLogic Server Web サービスを、9.2 の Web サービスの実行時環境で動作するようにアップグレードする方法を説明します。

 


9.0 または 9.1 WebLogic Web サービスの 9.2 へのアップグレード

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

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

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

 


8.1 Web サービスの 9.2 へのアップグレード

この節では、8.1 WebLogic Web サービスをアップグレードして、新しいバージョン 9.2 の Web サービス実行時環境を使用するようにする方法を説明します。9.2 ランタイムは、Implementing Enterprise Web Services 1.1 仕様 (JSR-109 の 1.1 メンテナンス リリースである JSR-921) に準拠しています。9.2 のプログラミング モデルでは、Web Services Metadata for the Java Platform 仕様 (JSR-181) で指定されている標準の JDK 1.5 メタデータ アノテーションを使用しています。

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

8.1 Web サービスのアップグレードには、以下の高度なタスクが含まれます。以降の節の手順説明では、より詳しく説明します。

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

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

8.1 Java クラス実装の WebLogic Web サービスの 9.2 へのアップグレード : 主な手順

8.1 Java クラス実装の Web サービスを、9.2 WebLogic Web サービス ランタイムを使用するようにアップグレードするには、次の手順を行います。

  1. コマンド ウィンドウを開いて、ドメイン ディレクトリの bin サブディレクトリにある setDomainEnv.cmd (Windows) または setDomainEnv.sh (UNIX) スクリプトを実行して、WebLogic Server 9.2 の環境を設定します。
  2. WebLogic Server ドメインのデフォルトの場所は、BEA_HOME/user_projects/domains/domainName です。BEA_HOME は BEA Products の最上位のインストール ディレクトリ、domainName はドメインの名前です。

  3. プロジェクト ディレクトリを作成します。
  4.    prompt> mkdir /myExamples/upgrade_pojo
  5. プロジェクト ディレクトリの下に、src ディレクトリと、古い 8.1 Java クラスに対応する新しい 9.2 JWS ファイル (この手順で後述) のパッケージ名に相当するサブディレクトリを作成します。
  6.    prompt> cd /myExamples/upgrade_pojo
    prompt> mkdir src/examples/webservices/upgrade_pojo
  7. 8.1 Web サービスを実装する古い Java クラスを、作業ディレクトリの src/examples/webservices/upgrade_pojo ディレクトリにコピーします。必要に応じてファイル名を変更してください。
  8. 次の手順に従って Java ファイルを編集します。新旧のサンプル Java ファイルについては、「8.1 Java ファイルと対応する 9.2 JWS ファイルの例」の個々の例を参照してください。
    1. 必要に応じて、新しい 9.2 ソース環境を反映するように 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 アノテーションの使用に関する概要については、「JWS ファイルのプログラミング」を参照してください。

    1. 9.2 Web サービスに引き継ぐ 8.1 Web サービスの機能によっては、JWS ファイルに他のアノテーションを追加することが必要な場合もあります。8.1 では、これらの機能の多くを servicegen の属性を使用してコンフィグレーションしていました。「servicegen 属性と JWS アノテーションまたは jwsc 属性のマッピング」の表に、8.1 で servicegen の属性を使用して有効にしていた機能に対応する JWS アノテーションをまとめてあります (相当するアノテーションがある場合のみ)。
  9. 8.1 Web サービスのビルドに使用していた古い build.xml ファイルを 9.2 の作業ディレクトリにコピーします。
  10. Ant build.xml ファイルを更新して、servicegen の代わりに jwsc Ant タスクとその他のサポート タスクが実行されるようにします。
  11. Ant ビルド ファイルで build-service などの新しいターゲットを作成し、前の手順で作成した新しい JWS ファイルをコンパイルする jwsc Ant タスク呼び出しを追加することをお勧めします。このターゲットがいったん正常に機能すれば、古い servicegen Ant タスクは削除できます。

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

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

    1. jwsc taskdef を build.xml ファイルに追加します。
    2. build-service ターゲットを作成し、次の手順の説明に従って 9.2 Web サービスをビルドするのに必要なタスクを追加します。
    3. jwsc タスクをビルド ファイルに追加します。srdir 属性にソース ディレクトリ (この例では /myExamples/upgrade_pojo/src) を設定し、destdir 属性に前の手順で作成したエンタープライズ アプリケーションのルート ディレクトリを設定します。
    4. <jws> 子要素の file 属性に、前の手順で作成した新しい JWS ファイルの名前を指定します。

      9.2 Web サービスに引き継ぐ 8.1 Web サービスの機能によっては、jwsc タスクに追加の属性を指定することが必要な場合もあります。8.1 では、これらの機能の多くを servicegen の属性を使用してコンフィグレーションしていました。「servicegen 属性と JWS アノテーションまたは jwsc 属性のマッピング」の表で、servicegen の属性を使用して有効にしていた機能に相当する jwsc 属性があるかどうかについて説明しています。

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

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

以降の節に示すサンプル Java コードの場合、アップグレード後の 9.2 Web サービスの WSDL を呼び出すための URL は次のようになります。

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

8.1 Java ファイルと対応する 9.2 JWS ファイルの例

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

package examples.javaclass;
/**
 * HelloWorld Web サービスを実装する単純な Java クラス。入力として
 * 整数と文字列を取り、これら 2 つのパラメータを含むメッセージ
 * を返す
 *
 * @author Copyright (c) 2005 by BEA Systems. All Rights Reserved.
 */
public final class HelloWorld81 {
  /**
   * 整数と文字列の入力パラメータを含むテキスト メッセージ
   * を返す
   *
   */
  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;
  }
}

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

package examples.webservices.upgrade_pojo;
// 標準の JWS アノテーションをインポートする
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.soap.SOAPBinding;
// WebLogic JWS アノテーションをインポートする
import weblogic.jws.WLHttpTransport;
/**
 * HelloWorld92 Web サービスを実装する単純な Java クラス。入力として
 * 整数と文字列を取り、これら 2 つのパラメータを含むメッセージ
 * を返す
 *
 * @author Copyright (c) 2005 by BEA Systems. All Rights Reserved.
 */
@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 {
  /**
   * 整数と文字列の入力パラメータを含むテキスト メッセージ
   * を返す

   */
  @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 と更新された 9.2 の 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=".">
  <!-- このビルドのグローバルなプロパティを設定 -->
<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>
  <!-- Web サービスをビルドする古い 8.1 servicegen 呼び出しの例 -->
  <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 タスクを呼び出して 9.2 Web サービスをビルドする build.xml ファイルを示します。これは上に示した 8.1 の例に対応するもので、この節で説明したタスクが太字で示されています。この例では、9.2 Web サービスを実装する新しい JWS ファイルの名前が HelloWorld92Impl.java とされています。

<project name="webservices-upgrade_pojo" default="all">
  <!-- このビルドのグローバルなプロパティを設定 -->
  <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>

8.1 EJB 実装の WebLogic Web サービスの 9.2 へのアップグレード : 主な手順

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

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

  1. コマンド ウィンドウを開いて、9.2 のドメイン ディレクトリの bin サブディレクトリにある setDomainEnv.cmd (Windows) または setDomainEnv.sh (UNIX) スクリプトを実行して、WebLogic Server 9.2 の環境を設定します。
  2. WebLogic Server ドメインのデフォルトの場所は、BEA_HOME/user_projects/domains/domainName です。BEA_HOME は BEA Products の最上位のインストール ディレクトリ、domainName はドメインの名前です。

  3. プロジェクト ディレクトリを作成します。
  4.    prompt> mkdir /myExamples/upgrade_ejb
  5. プロジェクト ディレクトリの下に、src ディレクトリと、8.1 EJB 実装に対応する新しい 9.2 JWS ファイル (この手順で後述) のパッケージ名に相当するサブディレクトリを作成します。
  6.    prompt> cd /myExamples/upgrade_ejb
    prompt> mkdir src/examples/webservices/upgrade_ejb
  7. javax.ejb.SessionBean を実装していた 8.1 EJB Bean ファイルを、作業ディレクトリの src/examples/webservices/upgrade_ejb ディレクトリにコピーします。必要に応じてファイル名を変更してください。
  8. 注意 : 8.1 のホームおよびリモート EJB ファイルをコピーする必要はありません。
  9. 次の手順に従って EJB Bean ファイルを編集します。新旧のサンプル Java ファイルについては、「8.1 EJB ファイルと対応する 9.2 JWS ファイルの例」の個々の例を参照してください。
    1. 必要に応じて、新しい 9.2 ソース環境を反映するように Java ファイルのパッケージ名とクラス名を変更します。
    2. 必要に応じて、EJB クラス (javax.ejb.*) をインポートする import 文を削除します。これらのクラスは、アップグレード後の JWS ファイルでは必要ありません。
    3. import 文を追加して、標準および WebLogic 固有の JWS アノテーションがインポートされるようにします。
    4. JWS ファイルのクラス宣言から implements SessionBean コードを削除して、それ以降 javax.ejb.SessionBean が実装されないようにします。
    5. EJB 固有のメソッドをすべて削除します。
    • ejbActivate()
    • ejbRemove()
    • ejbPassivate()
    • ejbCreate()
    1. 少なくとも、次の JWS アノテーションを追加します。
    • JWS ファイルが Web サービスを実装することを指定する標準の @WebService アノテーション (Java クラス レベルで追加)
    • 以下のアノテーションも追加することをお勧めします。

    • Web サービスの種類 (document-literal-wrapped、RPC-encoded など) を指定する標準の @SOAPBinding アノテーション (クラス レベルで追加)
    • デプロイされた Web サービスを呼び出す URL で使用されるコンテキストとサービス URI を指定する WebLogic 固有の @WLHttpTransport アノテーション (クラス レベルで追加)
    • 標準の @WebMethod アノテーション (Web サービス オペレーションとして公開されるメソッドごとにメソッド レベルで追加)
    • Java ファイルでの JWS アノテーションの使用に関する概要については、「JWS ファイルのプログラミング」を参照してください。

    1. 9.2 Web サービスに引き継ぐ 8.1 Web サービスの機能によっては、JWS ファイルに他のアノテーションを追加することが必要な場合もあります。8.1 では、これらの機能の多くを servicegen の属性を使用してコンフィグレーションしていました。「servicegen 属性と JWS アノテーションまたは jwsc 属性のマッピング」の表に、8.1 で servicegen の属性を使用して有効にしていた機能に対応する JWS アノテーションをまとめてあります (相当するアノテーションがある場合のみ)。
  10. 8.1 Web サービスのビルドに使用していた古い build.xml ファイルを 9.2 の作業ディレクトリにコピーします。
  11. Ant build.xml ファイルを更新して、servicegen の代わりに jwsc Ant タスクとその他のサポート タスクが実行されるようにします。
  12. Ant ビルド ファイルで build-service などの新しいターゲットを作成し、前の手順で作成した新しい JWS ファイルをコンパイルする jwsc Ant タスク呼び出しを追加することをお勧めします。このターゲットがいったん正常に機能すれば、古い servicegen Ant タスクは削除できます。

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

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

    1. jwsc taskdef を build.xml ファイルに追加します。
    2. build-service ターゲットを作成し、次の手順の説明に従って 9.2 Web サービスをビルドするのに必要なタスクを追加します。
    3. jwsc タスクをビルド ファイルに追加します。srdir 属性にソース ディレクトリ (この例では /myExamples/upgrade_ejb/src) を設定し、destdir 属性に前の手順で作成したエンタープライズ アプリケーションのルート ディレクトリを設定します。
    4. <jws> 子要素の file 属性に、前の手順で作成した新しい JWS ファイルの名前を指定します。

      9.2 Web サービスに引き継ぐ 8.1 Web サービスの機能によっては、jwsc タスクに追加の属性を指定することが必要な場合もあります。8.1 では、これらの機能の多くを servicegen の属性を使用してコンフィグレーションしていました。 「servicegen 属性と JWS アノテーションまたは jwsc 属性のマッピング」の表に、servicegen の属性を使用して有効にしていた機能に対応する jwsc 属性があるかどうかを示しています。

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

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

以降の節に示すサンプル Java コードの場合、アップグレード後の 9.2 Web サービスの WSDL を呼び出すための URL は次のようになります。

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

8.1 EJB ファイルと対応する 9.2 JWS ファイルの例

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

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

8.1 SessionBean クラス
package examples.statelessSession;
import javax.ejb.CreateException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
/**
 * HelloWorldBean はステートレス セッション EJB。メソッドは、整数と文字列を取り、
 * 文字列を返す sayHello() の 1 つのみ
 * <p>
 * sayHello() メソッドは、この EJB に基づく Web サービスのパブリック
 * オペレーション
 *
 * @author Copyright (c) 2005 by BEA Systems. All Rights Reserved.
 */
public class HelloWorldBean81 implements SessionBean {
  private static final boolean VERBOSE = true;
  private SessionContext ctx;
  // WebLogic のログ サービスの使用も検討すること
  private void log(String s) {
    if (VERBOSE) System.out.println(s);
  }
  /**
   * 単一の EJB ビジネス メソッド
   */
  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;
  }
  /**
   * このメソッドは EJB 仕様では必須だが、
   * このサンプルでは使用されない
   *
   */
  public void ejbActivate() {
    log("ejbActivate called");
  }
  /**
   * このメソッドは EJB 仕様では必須だが、
   * このサンプルでは使用されない
   *
   */
  public void ejbRemove() {
    log("ejbRemove called");
  }
  /**
   * このメソッドは EJB 仕様では必須だが、
   * このサンプルでは使用されない
   *
   */
  public void ejbPassivate() {
    log("ejbPassivate called");
  }
  /**
   * セッション コンテキストを設定
   *
   * @param ctx SessionContext セッションのコンテキスト
   */
  public void setSessionContext(SessionContext ctx) {
    log("setSessionContext called");
    this.ctx = ctx;
  }
  /**
   * このメソッドは EJB 仕様では必須だが、
   * このサンプルでは使用されない
   *
   */
  public void ejbCreate () throws CreateException {
    log("ejbCreate called");
  }
}
8.1 リモート インタフェース
package examples.statelessSession;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
/**
 * このインタフェース内のメソッドは HelloWorld のパブリック インタフェース
 * これらのメソッドのシグネチャは EJBean のシグネチャと同じだが、
 * java.rmi.RemoteException を送出する点で異なる
 *
 * @author Copyright (c) 2005 by BEA Systems. All Rights Reserved.
 */
public interface HelloWorld81 extends EJBObject {
  /**
   * 単に EJB から挨拶を返す
   *
   * @param num int 返す回数
   * @param s String 返す文字列
   * @return String 戻り値
   * @exception RemoteException 通信やシステムに障害が発生した場合に
   *                          送出する例外
   */
  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;
/**
 * HelloWorld ステートレス セッション EJB のホーム インタフェース
 *
 * @author Copyright (c) 2005 by BEA Systems. All Rights Reserved.
 */
public interface HelloWorldHome81 extends EJBHome {
  /**
   * このメソッドは、HelloWorldBean81.java ファイルの ejbCreate メソッド
   * に対応する
   */
  HelloWorld81 create()
    throws CreateException, RemoteException;
}
相当する 9.2 JWS ファイル

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

package examples.webservices.upgrade_ejb;
// 標準の JWS アノテーションをインポートする
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
// WebLogic 固有のアノテーションをインポートする
import weblogic.jws.WLHttpTransport;
// クラスレベルのアノテーション
@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 は、8.1 Web サービスを実装していた HelloWorld81 EJB
 * に相当する JWS。メソッドは、整数と文字列を取り、
 * 文字列を返す sayHello() の 1 つのみ
 * <p>
 * @author Copyright (c) 2005 by BEA Systems. All Rights Reserved.
 */
public class HelloWorld92Impl {
  /** sayHello メソッドが Web サービスのパブリック オペレーション
   * になる
   */
  @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 と更新された 9.2 の Ant ビルド ファイルの例 (8.1 EJB 実装の Web サービス)

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

<project name="ejb-webservice" default="all" basedir=".">
  <!-- このビルドのグローバル プロパティを設定 -->
<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>
  <!-- Web サービスをビルドする古い 8.1 servicegen 呼び出しの例 -->
  <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 タスクを呼び出して 9.2 Web サービスをビルドする build.xml ファイルを示します。これは上に示した 8.1 の例に対応するもので、この節で説明したタスクが太字で示されています。

<project name="webservices-upgrade_ejb" default="all">
  <!-- このビルドのグローバルなプロパティを設定 -->
  <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 タスクの属性と、それに対応する 9.2 JWS アノテーションまたは jwsc 属性を示します。

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

9.2 JWS アノテーションおよび jwsc Ant タスクの詳細については、「JWS アノテーション リファレンス」および「jwsc」を参照してください。

表 13-1 servicegen 属性と JWS アノテーションまたは jwsc 属性のマッピング
servicegen または servicegen の子要素の属性
対応する JWS アノテーションまたは jwsc 属性
contextURI
WebLogic 固有の @WLHttpTransport アノテーションの contextPath 属性。
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 サービスは、9.2 リリースではサポートされないため。
JMSConnectionFactory
(service 子要素の属性)
対応する属性なし。JMS 実装の Web サービスは、9.2 リリースではサポートされないため。
JMSDestination
(service 子要素の属性)
対応する属性なし。JMS 実装の Web サービスは、9.2 リリースではサポートされないため。
JMSDestinationType
(service 子要素の属性)
対応する属性なし。JMS 実装の Web サービスは、9.2 リリースではサポートされないため。
JMSMessageType
(service 子要素の属性)
対応する属性なし。JMS 実装の Web サービスは、9.2 リリースではサポートされないため。
JMSOperationName
(service 子要素の属性)
対応する属性なし。JMS 実装の Web サービスは、9.2 リリースではサポートされないため。
protocol
(service 子要素の属性)
以下のいずれかの WebLogic 固有アノテーション。
  • @WLHttpTransport
  • @WLJmsTransport
serviceName
(service 子要素の属性)
標準の @WebService アノテーションの serviceName 属性。
serviceURI
(service 子要素の属性)
WebLogic 固有の @WLHttpTransport または @WLJmsTransport アノテーションの serviceUri 属性。
style
(service 子要素の属性)
標準の @SOAPBinding アノテーションの style 属性。
typeMappingFile
(service 子要素の属性)
対応する属性なし。
targetNamespace
(service 子要素の属性)
標準の @WebService アノテーションの targetNamespace 属性。
userSOAP12
(service 子要素の属性)
WebLogic 固有の @weblogic.jws.Binding JWS アノテーションの value 属性。
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 属性を使用する。
persistDuration
(reliability 子要素の属性)
直接的に対応する属性なし。
Web サービスの信頼性のあるメッセージング ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の @Policy 属性を使用する。
enablePasswordAuth
(security 子要素の属性)
直接的に対応する属性なし。
メッセージレベルのセキュリティ ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の @Policy 属性を使用する。
encryptKeyName
(security 子要素の属性)
直接的に対応する属性なし。
メッセージレベルのセキュリティ ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の @Policy 属性を使用する。
encryptKeyPass
(security 子要素の属性)
直接的に対応する属性なし。
メッセージレベルのセキュリティ ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の @Policy 属性を使用する。
password
(security 子要素の属性)
直接的に対応する属性なし。
メッセージレベルのセキュリティ ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の @Policy 属性を使用する。
signKeyName
(security 子要素の属性)
直接的に対応する属性なし。
メッセージレベルのセキュリティ ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の @Policy 属性を使用する。
signKeyPass
(security 子要素の属性)
直接的に対応する属性なし。
メッセージレベルのセキュリティ ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の @Policy 属性を使用する。
username
(security 子要素の属性)
直接的に対応する属性なし。
メッセージレベルのセキュリティ ポリシーのアサーションを含む WS-Policy ファイルを指定するには、WebLogic 固有の @Policy 属性を使用する。


  ページの先頭       前  次