WSDL2WebService ツールを使用した Web サービスの作成

コマンド行から WSDL2WebService ツールを使用すると、IBM® WebSphere® ランタイム環境を使用して WSDL ファイルから Web サービスを生成できます。

前提条件:

このツールは、次の 3 つのステージに従って使用します。

  1. -createService 引数を指定してこのツールを実行し、特定の WSDL 文書に記述されている Web サービスのスケルトン Java 実装テンプレートを作成する。
  2. このテンプレートに実装コードを書き込み、ステージ 1 で生成したビルド・スクリプトを使用してコンパイルする。
  3. -createEar 引数を指定して再びこのツールを実行し、この実装から Web サービス対応のアーカイブを作成する。

注: ステージ 1 を複数回実行することにより、同じプロジェクト・ディレクトリー内に関連の Web サービスを作成できます。それに応じて、ステージ 3 では、これらの各 Web サービスにそれぞれ別個のモジュールを作成し、それらのモジュールを同じ EAR ファイルに追加できます。

コマンド行のセットアップ

WSDL2WebService ツールを使用する前に、次の方法で Web サービスのコマンド行をセットアップする必要があります。

  1. コマンド・プロンプトで、Rational® Developer 製品の bin ディレクトリーに移動する。 
  2. 次のバッチ・スクリプトを実行する。 
    • Windows®: setupenv.bat
    • Linux: .setupenv.sh
  3. Web サービスを作成するディレクトリーに移動する。このディレクトリーをコマンド行テスト・ディレクトリーと呼びます。 Linux: このディレクトリーに対する書き込みアクセスが必要です。

 これで、WSDL2WebService ツールのステージ 1 を実行できます。

スケルトン Web サービス実装の作成

注: WSDL2WebService ツールには、2 つのバージョンがあります。WSDL2WebService コマンドを使用すると、このコマンドは J2EE 1.4 を使用します。このほかに、J2EE 1.3 を使用する WSDL2WebService13 コマンドを使用することができます。以下のコマンドでは、J2EE 1.3 を使用する Web サービスを作成したい場合に、WSDL2WebService の代わりに WSDL2WebService13 を使用することができます。

スケルトン Web サービス実装を作成するには、コマンド・プロンプトに次のように入力します。

  • Windows: WSDL2WebService [<optional arguments>] -project <ProjectDir> -createService <ServiceName> <WSDL URI>
  • Linux: WSDL2WebService.sh [<optional arguments>] -project <ProjectDir> -createService <ServiceName> <WSDL URI>

注: 最後の引数として、必ず <WSDL URI> を指定してください。この引数は 大文字小文字が区別されます。オプショナル引数および必須引数のリストについては、『WSDL2WebService ツール』 を参照してください。

ヒント:
  • オプションの引数 -host <hostname:port> を指定することをお勧めします。このコマンドのデフォルト・ポートは 6080 ですが、デフォルトの WebSphere Application Server ポートは 9080 です。
  • -project に指定したコマンド行テスト・ディレクトリーのパスおよびその名前をメモしておいてください。この情報は、Web サービスをデプロイおよびテストするときに必要です。

-createService <ServiceName> 引数を指定してこのツールを実行すると、指定したプロジェクトの下に、いくつかのサブディレクトリーを含む <ServiceName> というディレクトリーが作成されます。これらのサブディレクトリーには、Web サービス実装の作成に必要なすべての Java テンプレートがすべて含まれています。

これは、WSDL2WebService ツールの使用方法を示す例です。

WSDL2WebService -createService ejb1Service -project dir:¥myproj¥ejbDir -host localhost:9080 -contextRoot ejb1Service -type EJB -verbose dir:¥TempConv.wsdl

実装コードのコンパイル

作成する Web サービスを正しく実装できるよう、スケルトン Java ファイルを変更する必要があります。Java スケルトンに正しいコードを追加した後、Java スケルトンをコンパイルする必要があります。compile というビルド・スクリプトも生成され、このすべてのコードをコンパイルするために 利用できます。

実装コードをコンパイルするには、次の手順を実行します。

  1. <ServiceName> ディレクトリーに移動する。
  2. 実装コードに、.class ファイルを含む JAR ファイルやディレクトリーなどの依存関係がある場合は、 コンパイル・スクリプトを編集し、これらの依存関係の絶対パスを USER_CLASSPATH 変数に追加する。以下がその例です。 
    • Windows: set USER_CLASSPATH = c:¥MyJars¥webservice.jar;c:¥MyClasses
    • Linux: USER_CLASSPATH = /home/MyJars/webservice.jar:/home/MyClasses
  3. 以下のコマンドを入力する。
    • Windows:  compile
    • Linux:  compile.sh
    このコマンドを実行するために必要なパラメーターはありません。

Web サービス対応アーカイブの作成

サービスを作成し、実装コードを Java スケルトンに追加して、新規コードをコンパイルした後、Web サービス対応のアーカイブを作成する必要があります。Web サービス対応のアーカイブを作成するには、コマンド・プロンプトで次のように入力します。

  • Windows: WSDL2WebService [<optional arguments>] -createEar <File.ear> -project <ProjectDir>
  • Linux: WSDL2WebService.sh [<optional arguments>] -createEar <File.ear> -project <ProjectDir>

オプショナル引数および必須引数の説明については、『WSDL2WebService ツール』を参照してください。

ヒント: Web サービスをデプロイおよびテストする場合は、-project に指定したコマンド行テスト・ディレクトリーのパスおよびその名前をメモしておいてください。

実装コードを作成およびコンパイルし、-createEar <File.ear> 引数を指定して再びこのツールを 実行すると、新規または更新された EAR ファイルが出力されます。このファイルには、-add 引数によって指定した各 Web サービス名に対し、Web サービス・モジュールが 1 つずつ含まれます。また、Web サービスを実装するサーバー・サイド・クラスが、通常の場所である WEB-INF¥classes ディレクトリーに移動していることにも気付くはずです。 -server-side-only 引数を指定しない場合、追加の Java ファイル (複合タイプのシリアライザーおよびデシリアライザー・クラスなど) を含むクライアント・サイド・ディレクトリーも作成されます。

EAR ファイルの生成後、ほかのユーザーが使用できるようにこのファイルをサーバーにデプロイできます。これを行うには、コマンド行ツールを使用した Web サービスのサーバーへのデプロイ を参照してください。

Web サービス対応のアーカイブを作成する方法の例を、以下に示します。
WSDL2WebService -createEAR dir:¥myear¥ejb1ear.ear -project dir:¥myproj¥ejbDir -add ejb1Service -verbose localhost:9080/ejb1Service/services/TempConv
単一のプロジェクト内に 2 つ以上の Web サービスを作成した後、それらを単一のアーカイブ内にマージする場合は、『WSDL2WebService ツール』に記載されているように -rootModule オプションを使用します。例えば、MultiService という単一のプロジェクト内に AddressBook と Echo という 2 つの Java Bean Web サービスがある場合は、次のコマンドを実行して、これらの 2 つの Web サービスを単一のモジュール内にマージしてアーカイブすることができます。
WSDL2WebService -createEar dir:¥myear¥ejb1ear.ear -rootModule ejb1Service/services/Service -host localhost:9080 -project dir:¥myproj¥MultiService
これにより、マージされた Web サービスを含む Service_WEB.war という単一のモジュールを含む、MultiServiceEAR.ear が作成されます。このモジュールのコンテキスト・ルートは Service_WEB です。WSDL ファイルのすべてのサービス・エンドポイントのホスト名およびポート番号は、localhost:9080 に変更されます。
注: Web サービスをマージする際には、クラス名の競合は検査されません。必ず、各 Web サービス間で完全修飾クラス名が競合しないようにしてください。

コードの再利用のサポート

WSDL2WebService ツールでは、 JAR または EJB ファイルを EAR ファイルのルートに配置できるようにして、コードの再利用をサポートします。 JAR または EJB ファイルには、中に含まれる 1 つ以上の Web サービスがアクセスします。サービスと同じ名前の JAR ファイルに、すべてのクラスをアーカイブすることにより、Web サービス実装情報を再利用することができます。クラスを JAR ファイルにアーカイブするには、以下のステップに従って実行してください。

  1. WSDL2WebService ツールの実行後、再利用する JAR ファイルをプロジェクト・ディレクトリーのルートにプットする。再利用するファイルは、JAR ファイルの場合または EJB ファイルの場合があるので注意してください。
  2. プロジェクト内にあるこれらの JAR ファイルのいずれかを必要とする Web サービスごとに、JAR ファイルに絶対パスを追加して、そのコンパイル・スクリプトの USER_CLASSPATH 変数を更新する。
  3. 各 Web サービスを通常どおりコンパイルする。
  4. WSDL2WebService ツールを -createEAR 引数を通常通り指定して実行する。WSDL2WebService ツールは 自動的に JAR ファイルを EAR ファイルに追加し、これらの JAR ファイルへの参照をすべて更新します。 
重要:
  • ローカル・インポートを行う一連の WSDL ファイルを使用する EJB Web サービスを作成するために WSDL2WebService コマンドを実行すると、EAR ファイルが生成されますが、これがワークスペースにインポートされて、単体テスト環境またはリモート・サーバーにデプロイされると、サーバー開始中に例外が発生します。この例外は、ルーターの Web プロジェクトでの WSDL の欠落が原因です。このエラーを避けるには、以下のいずれかを行ってください。
    • 管理者コンソールを使用してスタンドアロンの WebSphere Application Server にデプロイする。
    • モノリシック WSDL を使用する。つまり、-splitWsdl 引数を使用しない。
    • EJB プロジェクトの META-INF/wsdl ディレクトリーの下にあるすべての WSDL ファイルを手動でルーター Web プロジェクトの WEB-INF/wsdl にコピーする。
  • -genResolver 引数を選択すると、EAR を開始できません。問題は、WSDL 文書が <wsdl:import> を使用して XSD をインポートするときの大文字小文字を -genResolver オプションが処理できないことにあります。この問題を避けるには、以下のいずれかを行ってください。
    • <types><schema><import> を使用して XSD をインポートするように WSDL を編集する。
    • コマンド行ツールで -genResolver オプションを使用しない。
ご利用条件 | フィードバック
(C) Copyright IBM Corporation 1999, 2005. All Rights Reserved.
(C) Copyright IBM Japan 2005.