プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle WebLogic Server JAX-RPC Webサービスの開発
12c (12.2.1)
E69969-01
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

3 JAX-RPC Webサービスの開発

この章では、Java API for XML-based RPC (JAX-RPC)を使用したWebLogic Webサービスの反復的な開発プロセスについて説明します。

この章の内容は次のとおりです。

WebLogic Webサービス・プログラミング・モデルの概要

WebLogic Webサービスのプログラミング・モデルはJWSファイル(JWSアノテーションを使用してWebサービスの形式や動作を指定したJavaファイル)と、JWSファイルを実行するAntタスクを中心に展開されます。JWSアノテーションは、JDKのバージョン5.0で導入されたメタデータ機能(http://www.jcp.org/en/jsr/detail?id=175にあるJSR-175により指定されています)に基づいており、Web Services Metadata for the Java Platform仕様(JSR-181) (http://www.jcp.org/en/jsr/detail?id=181に記載されています)で定義されている標準のアノテーションのほかに、追加のアノテーションを含みます。サポートされるJWSアノテーションの完全なリストは、『Oracle WebLogic Server WebLogic Webサービス・リファレンス』のWebサービスのアノテーション・サポートに関する項を参照してください。このプログラミング・モデルの詳細は、『Oracle WebLogic Server WebLogic Webサービスの理解』を参照してください。

以下の項では、Webサービスを繰返し開発する主要な手順を、Javaから開始する場合、または既存のWSDLファイルから開始する場合について説明します。

反復的な開発とは、希望どおりに動作するまで、Webサービスを繰返しコーディング、コンパイル、パッケージ化、デプロイ、およびテストできるように、開発環境を設定することです。WebLogic Webサービス・プログラミング・モデルでは、Antタスクを使用して、反復的な開発のほとんどの手順を実行します。一般に、すべての手順に対応するターゲットを含んだ1つのbuild.xmlファイルを作成して、そのターゲットを繰返し実行します。JWSファイルを新しいJavaコードで更新したら、その更新が期待どおりに動作することをテストします。

Webサービスを開発するために、この項で説明したコマンド・ライン・ツールの他に、Oracle JDeveloperなどのIDEも使用できます。詳細は、『Oracle WebLogic Server WebLogic Webサービスの理解』のOracle IDEを使用したWebサービスの構築に関する項を参照してください。

Webサービス機能用のドメイン構成

WebLogic Serverドメインを作成したら、構成ウィザードでWebサービス固有の拡張テンプレートを使用してドメインを更新し、特定のWebLogic Webサービス機能で必要になるリソースを自動的に構成できます。この拡張テンプレートの使用は必須ではありませんが、これを使用することでJMSおよびJDBCリソースの構成を大幅に簡略化できます。

Webサービス拡張テンプレートを使用すると、以下の機能で必要になるリソースを自動的に構成できます。

  • Webサービスの信頼性のあるメッセージング

  • バッファリング

  • JMSトランスポート


注意:

Webサービスのリソースを含まないドメインは、Webサービス以外のシナリオおよび非同期のリクエスト/レスポンスが含まれないWebサービス・シナリオにおいて、適切に起動および実行されます。ただし、サーバー・ログに、非同期リソースが構成されていないこと、およびWebサービスの非同期レスポンス・サービスが完全にデプロイされていないことを示すINFOメッセージが表示されます。

次の各手順は、Webサービスの高度な機能を使用するようにドメインを自動的に構成するためのドメインの作成方法および拡張方法を示しています。構成ウィザードを使用してWebLogic Serverドメインを作成および更新する詳細な手順については、構成ウィザードを使用したWebLogicドメインの作成を参照してください。

高度なWebサービス機能用に自動的に構成されるドメインを作成するには:

  1. 構成ウィザードを起動します。

  2. 「ようこそ」ウィンドウで、「新しいWebLogicドメインの作成」を選択します。

  3. 「次へ」をクリックします。

  4. 「以下の製品をサポートするために、自動的に構成されたドメインを生成する」を選択し、「WebLogic Advanced Web Services for JAX-RPC Extension」を選択します。

  5. 「次へ」をクリックします。

  6. ドメインの名前と場所を入力し、「次へ」をクリックします。

  7. 管理者ユーザーの名前とパスワードを構成し、「次へ」をクリックします。

  8. サーバーの起動モードとJDKを構成し、「次へ」をクリックします。

  9. JMSサービス、ファイル・ストア、その他の機能をさらに構成する場合は、「オプションの構成を選択」画面で項目を選択します。通常はこれは行いません。

    それ以外の場合は、すべての項目が選択解除された状態で、「次へ」をクリックします。

  10. 「構成のサマリー」画面が表示されたら、ドメインの詳細を検証して「作成」をクリックします。

  11. 終了するには「完了」をクリックします。

既存のドメインを拡張してこれらのWebサービス機能用に自動的に構成するには:

  1. 構成ウィザードを起動します。

  2. 「ようこそ」ウィンドウで、「既存のWebLogicドメインの拡張」を選択します。

  3. 「次へ」をクリックします。

  4. 拡張テンプレートを適用するドメインを選択します。

  5. 「次へ」をクリックします。

  6. 「以下の追加製品をサポートするために、自動的にドメインを拡張する」を選択し、「WebLogic Advanced Web Services for JAX-RPC Extension」を選択します。

  7. 「次へ」をクリックします。

  8. JMSサービスやファイル・ストアをさらに構成する場合は、「オプションの構成を選択」画面で項目を選択します。通常はこれは行いません。

    それ以外の場合は、すべての項目が選択解除された状態で、「次へ」をクリックします。

  9. 拡張するドメインが正しいことを確認して「拡張」をクリックします。

  10. 終了するには「完了」をクリックします。

Javaから開始するWebLogic Webサービスの開発: 主な手順

この節では、Javaから開始してWebLogic Webサービスを開発する一般的な手順について説明します。つまり、JWSファイルを最初からコーディングして、サービスについて記述するWSDLファイルを後で生成するという手順です。このプロセスの具体的な例については、第2章「JAX-RPC Webサービス開発者向けサンプル」を参照してください。

以下に示すのは推奨の手順に過ぎません。独自の開発環境を設定してある場合は、WebLogic Webサービスを開発するために既存の環境を更新する際のガイドとして、この手順を利用できます。


注意:

この手順では、WebLogic Webサービスの分割開発ディレクトリ環境は使用しません。この開発環境を使用していて、Webサービスの開発をそこに統合する場合の詳細は、「WebサービスのWebLogic分割開発ディレクトリ環境への統合」を参照してください。

表3-1 Javaから開始するWebサービスの開発手順

#
手順 説明

1

環境を設定します。

コマンド・ウィンドウを開いて、ドメイン・ディレクトリのbinサブディレクトリにあるsetDomainEnv.cmd (Windows)またはsetDomainEnv.sh (UNIX)コマンドを実行します。WebLogic Serverドメインのデフォルトの場所はORACLE_HOME/user_projects/domains/domainNameです(ORACLE_HOMEはOracle WebLogic Serverのインストール時にOracleホームとして指定したディレクトリ、domainNameはドメインの名前です)。

2

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

JWSファイル、ユーザー定義のデータ型のJavaソース、Ant build.xmlファイルが格納されるプロジェクト・ディレクトリを作成します。このディレクトリには自由に名前を付けることができます。

3

Webサービスを実装するJWSファイルを作成します。

「JWSファイルのプログラミング: 一般的な手順」を参照してください。

4

ユーザー定義のデータ型を作成する(オプション)

Webサービスでユーザー定義のデータ型を使用する場合は、その型を記述したJavaBeanを作成します。「ユーザー定義のJavaデータ型のプログラミング」を参照してください。

5

基本のAntビルド・ファイルbuild.xmlを作成します。

「基本的なAnt build.xmlファイルの作成」を参照してください。

6

JWSファイルに対してjwsc Antタスクを実行します。

ソース・コード、データ・バインディング・アーティファクト、デプロイメント記述子などがjwsc Antタスクによって出力ディレクトリ内に生成されます。この出力ディレクトリには、エンタープライズ・アプリケーションのディレクトリ構造も生成されます。この展開されたディレクトリは、後で反復的な開発プロセスの一環としてWebLogic Serverにデプロイします。「jwsc WebLogic WebサービスAntタスクの実行」を参照してください。

7

WebサービスをWebLogic Serverにデプロイします。

「WebLogic Webサービスのデプロイとアンデプロイ」を参照してください。

8

WebサービスのWSDLを参照します。

WebサービスのWSDLを参照して、Webサービスが適切にデプロイされたことを確認します。「WebサービスのWSDLの参照」を参照してください。

9

Webサービスをテストします。

「Webサービスのテスト」を参照してください。

10

Webサービスを編集する(オプション)

Webサービスに変更を加えるには、JWSファイルを更新し、「WebLogic Webサービスのデプロイとアンデプロイ」の説明のとおりにWebサービスをアンデプロイしてから、jwsc Antタスクの実行(ステップ6)から始まる手順を繰り返します。


Webサービスを呼び出すクライアント・アプリケーションの作成方法については、第4章「JWSファイルのプログラミング」を参照してください。

WSDLファイルから開始するWebLogic Webサービスの開発: 主な手順

この項では、既存のWSDLファイルに基づいてWebLogic Webサービスを開発する一般的な手順について説明します。このプロセスの具体的な例については、第3章「JAX-RPC Webサービスの開発」を参照してください。

以下に示すのは推奨の手順に過ぎません。独自の開発環境を設定してある場合は、WebLogic Webサービスを開発するために既存の環境を更新する際のガイドとして、この手順を利用できます。

この手順では既存のWSDLファイルがすでにあることを前提としています。


注意:

この手順では、WebLogic Webサービスの分割開発ディレクトリ環境は使用しません。この開発環境を使用していて、Webサービスの開発をそこに統合する場合の詳細は、「WebサービスのWebLogic分割開発ディレクトリ環境への統合」を参照してください。

表3-2 Javaから開始するWebサービスの開発手順

#
手順 説明

1

環境を設定します。

コマンド・ウィンドウを開いて、ドメイン・ディレクトリのbinサブディレクトリにあるsetDomainEnv.cmd (Windows)またはsetDomainEnv.sh (UNIX)コマンドを実行します。WebLogic Serverドメインのデフォルトの場所はORACLE_HOME/user_projects/domains/domainNameです(ORACLE_HOMEはOracle WebLogic Serverのインストール時にOracleホームとして指定したディレクトリ、domainNameはドメインの名前です)。

2

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

生成されるアーティファクトやAnt build.xmlファイルが格納されるプロジェクト・ディレクトリを作成します。

3

基本のAntビルド・ファイルbuild.xmlを作成します。

「基本的なAnt build.xmlファイルの作成」を参照してください。

4

WSDLファイルを、build.xml Antビルド・ファイルから読取り可能なディレクトリに置きます。

たとえば、WSDLファイルをプロジェクト・ディレクトリのwsdl_files子ディレクトリに置くことができます。

5

WSDLファイルに対してwsdlc Antタスクを実行します。

JWSサービス・エンドポイント・インタフェース(SEI)、途中まで作成済みのJWSクラス・ファイル、XMLスキーマ・データ型を表すJavaBeanなどが、wsdlc Antタスクによって出力ディレクトリ内に生成されます。「wsdlc WebLogic WebサービスAntタスクの実行」を参照してください。

6

wsdlc Antタスクにより生成された途中まで作成済みのJWSファイルを更新します。

wsdlc Antタスクでは途中まで作成済のJWSファイルが生成されます。Webサービスが希望どおりに動作するようにするには、独自のビジネス・コードを追加する必要があります。「wsdlcで生成される途中まで作成済のJWS実装クラス・ファイルの更新」を参照してください。

7

JWSファイルに対してjwsc Antタスクを実行します。

wsdlc Antタスクによって生成されたアーティファクトと更新したJWS実装ファイルを指定して、Webサービスを実装するエンタープライズ・アプリケーションを生成します。「jwsc WebLogic WebサービスAntタスクの実行」を参照してください。

8

WebサービスをWebLogic Serverにデプロイします。

「WebLogic Webサービスのデプロイとアンデプロイ」を参照してください。

9

WebサービスのWSDLを参照します。

WebサービスのWSDLを参照して、Webサービスが適切にデプロイされたことを確認します。「WebサービスのWSDLの参照」を参照してください。

デプロイ済みWebサービスのWSDLを呼び出すときに使用するURLは、基本的に、元のWSDL内の<address>要素のlocation属性の値と同じです(ただし、ホストとポートの値が、サービスをデプロイしたWebLogic Serverインスタンスのホストとポートに対応する場合を除きます)。これは、wsdlc AntタスクがJWS実装ファイル内の@WLHttpTransportアノテーションのcontextPathおよびserviceURIの値を生成し、それらの値を合わせると、元のWSDLで指定されたエンドポイント・アドレスと同じURIが構成されるため。

10

Webサービスをテストします。

「Webサービスのテスト」を参照してください。

11

Webサービスを編集する(オプション)

Webサービスに変更を加えるには、JWSファイルを更新し、「WebLogic Webサービスのデプロイとアンデプロイ」の説明のとおりにWebサービスをアンデプロイしてから、jwsc Antタスクの実行(ステップ6)から始まる手順を繰り返します。


Webサービスを呼び出すクライアント・アプリケーションの作成方法については、第6章「JAX-RPC Webサービス・クライアントの開発」を参照してください。

基本的なAnt build.xmlファイルの作成

Antでは、XMLで記述されたビルド・ファイル(デフォルト名はbuild.xml)を使用します。このファイルには、<project>ルート要素と、Webサービス開発プロセスのさまざまな段階を指定した1つまたは複数のターゲットが含まれています。各ターゲットには、1つまたは複数のタスク、または実行可能なコードが含まれています。この節では、基本的なAntビルド・ファイルの作成方法について説明し、その後の節では、Webサービス開発プロセスのさまざまな段階(jwsc Antタスクを実行してJWSファイルを処理する、WebサービスをWebLogic Serverにデプロイする、など)の実行方法を指定したターゲットをビルド・ファイルに追加する方法について説明します。

以下のスケルトンのbuild.xmlファイルでは、以降の項で追加される他のすべてのターゲットを呼び出す、デフォルトのallターゲットを指定しています。

<project default="all">
  <target name="all" 
           depends="clean,build-service,deploy" />
  <target name="clean">
     <delete dir="output" />
   </target>
  <target name="build-service">
      <!--add jwsc and related tasks here -->
   </target>
  <target name="deploy">
       <!--add wldeploy task here -->
  </dftarget>
</project>

jwsc WebLogic WebサービスAntタスクの実行

jwsc Antタスクは、JWSアノテーションを含むJWSファイルを入力として取り、WebLogic Webサービスの作成に必要なアーティファクトをすべて生成します。JWSファイルは、最初から自分でコーディングしたものでも、wsdlc Antタスクによって生成されたものでもかまいません。jwscによって生成されるアーティファクトには、次のものがあります。

  • JSR-109 Webサービスのクラス・ファイル。

  • 必要な全デプロイメント記述子。以下を含みます。

    • 標準のWebサービス・デプロイメント記述子(webservices.xml)およびWebLogic固有のWebサービス・デプロイメント記述子(weblogic-webservices.xml)。

    • JAX-RPCマッピング・ファイル。

    • Javaクラス実装のWebサービスweb.xmlおよびweblogic.xml

    • EJB実装のWebサービスejb-jar.xmlおよびweblogic-ejb-jar.xml

    • Earデプロイメント記述子ファイルapplication.xmlおよびweblogic-application.xml

  • Webサービス操作のパラメータまたは戻り値として使用されるJavaユーザー定義データ型のXMLスキーマ表現。

  • Webサービスの内容を外部に公開する形で記述したWSDLファイル。

これらのアーティファクトは、wsdlc Antタスクによってすでに生成され、JARファイル内にパッケージ化されているため、wsdlc Antタスクによって生成されたJWSファイルに対してjwsc Antタスクを実行しても、jwscタスクによってはアーティファクトは生成されません。この場合、jwsc Antタスクの属性を使用して、このwsdlc生成JARファイルを指定します。

必要なアーティファクトをすべて生成した後、jwsc Antタスクは、Javaファイル(JWSファイルも含む)をコンパイルし、コンパイルされたクラスと生成されたアーティファクトを、デプロイ可能なJARアーカイブ・ファイルにパッケージ化して、最後に、そのJARファイルを格納する、展開されたエンタープライズ・アプリケーション・ディレクトリを作成します。

jwsc Antタスクを使用して次の高度なタスクを実行できます。

  • 複数のJWSファイルを一度に処理します。生成されたWebサービスをそれぞれ別のWebアプリケーションWARファイルにパッケージ化するか、すべてのWebサービスをグループ化して1つのWARファイルにパッケージ化するかを選択できます。

  • 第3章「Webサービスの呼出しに使用されるトランスポートの指定」で説明されているように、クライアント・アプリケーションがWebサービスを呼び出すときに使用できるトランスポート(HTTP/HTTPS/JMS)を指定します。既存の@WLXXXTransportアノテーションをすべてオーバーライドすることも可能です。

  • JWSファイル内で呼び出す他のWebサービスのJAX-RPCクライアント・スタブを自動的に生成します。

  • 新しいエンタープライズ・アプリケーションまたはWebアプリケーションを生成するのではなく、既存のアプリケーションを更新します。

jwsc Antタスクを実行するには、以下のtaskdefおよびbuild-serviceターゲットをbuild.xmlファイルに追加します。

<taskdef name="jwsc"
          classname="weblogic.wsee.tools.anttasks.JwscTask" />  
<target name="build-service">
    <jwsc
       srcdir="src_directory"
       destdir="ear_directory"
       >
       <jws file="JWS_file" 
            compiledWsdl="WSDLC_Generated_JAR" 
             type="WebService_type"/>
     </jwsc>
  </target>

各項目の説明は次のとおりです。

  • ear_directory - 生成されたすべてのアーティファクトを格納するエンタープライズ・アプリケーション・ディレクトリ。

  • src_directory - JWSファイルのパッケージ名に対応するサブディレクトリを含む最上位ディレクトリ。

  • JWS_file - src_directory属性の値に対して相対的なJWSファイルのパス名。

  • WSDLC_Generated_JAR - JWS SEIと、既存のWSDLファイルに対応するデータ・バインディング・アーティファクトが含まれる、wsdlc Antタスクによって生成されたJARファイル。


    注意:

    この属性は、「WSDLから開始する」ユース・ケースでのみ指定します。この手順は「WSDLファイルから開始するWebLogic Webサービスの開発: 主な手順」で説明されています。

  • WebService_type - Webサービスの種類。この値は、JAXWSまたはJAXRPCに設定できます。

必須のtaskdef要素では、jwsc Antタスクの完全修飾クラス名を指定します。

jwsc Antタスクのsrcdirおよびdestdir属性のみが必須です。つまり、デフォルトでは、JWSファイルが参照するJavaファイル(JavaBean入力パラメータやユーザー定義の例外など)はJWSファイルと同じパッケージ内にあると想定されています。これに当てはまらない場合は、sourcepath属性を使用して、これらの他のJavaファイルの最上位ディレクトリを指定します。

jwsc Antタスクの詳細および例については、『Oracle WebLogic Server WebLogic Webサービス・リファレンス』jwscに関する項を参照してください。

Webサービスの呼出しに使用されるトランスポートの指定

jwsc<jws>子要素には、Webサービスの呼出しに使用するトランスポート(HTTP/SまたはJMS)を指定するための、次に示すオプションの子要素があります。

  • WLHttpTransport: 生成されたWSDLのポート名に加え、HTTP/SトランスポートでWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクションを指定します。

  • WLJMSTransport: JMSトランスポートでWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクションと、生成されたWSDLのポート名を指定します。また、JMSトランスポート用に構成済のJMSキュー名および接続ファクトリ名も指定します。

次のガイドラインで、jwsc Antタスクのトランスポート要素の使用方法について説明します。

  • jwscに対して指定したトランスポートは、JWSファイル内のすべての対応するトランスポート・アノテーションを常にオーバーライドします。また、トランスポート要素の対応する属性を明示的に指定していない場合でも、トランスポート・アノテーションのすべての属性は無視されます。この場合、トランスポート要素属性のデフォルト値が使用されます。

  • 特定のJWSファイルに対して両方のトランスポート要素を指定できます。ただし、指定できるのは、特定のトランスポート要素の1つのインスタンスのみです。たとえば、特定のJWSファイルに2つの異なる<WLHttpTransport>要素を指定することはできませんが、<WLHttpTransport>要素と<WLJmsTransport>要素をそれぞれ1つずつ指定することはできます。

  • serviceURI属性の値は、<WLJMSTransport><WLHttpTransport>の両方を指定する際、同じにすることができます。

  • 特定のJWSファイルに関連付けられるすべてのトランスポートでは、同じcontextPath属性値を指定する必要があります。

  • 特定のJWSファイルに複数のトランスポート要素を指定する場合、各要素のportName属性の値は、すべての要素において一意である必要があります。つまり、複数のトランスポート子要素を<jws>に追加する場合、この属性を明示的に指定する必要があることを意味します。これは、要素のデフォルト値は常に同じになるため、jwsc Antタスクの実行時にエラーが発生するためです。

  • jwsc Antタスクに対するトランスポート要素のいずれかまたはJWSファイルのトランスポート・アノテーションとしてトランスポートを指定しなかった場合、WebサービスのデフォルトURLは、WLHttpTransport要素のデフォルト値と一致します。

JAX-RPC Webサービスの場合、JWSファイルをプログラミングする際、クライアントがWebサービスを呼び出すのに使用するトランスポートを指定するために、特に@weblogic.jws.WLHttpTransportまたは@weblogic.jws.WLJMSTransportという形式のアノテーションを使用できます。JWSファイルでは、特定のトランスポート・アノテーションの1つのインスタンスのみを指定できます。たとえば、2つの異なる@WLHttpTransportアノテーションを指定することはできませんが、@WLHttpTransportアノテーションと@WLJmsTransportアノテーションをそれぞれ1つずつ指定することはできます。ただし、JWSファイルを記述している時点では、どのトランスポートがニーズに適しているかを判断できない可能性があります。そのため、トランスポートはビルド時に指定するのが一般的に最適な方法です。

WebLogic Webサービスのコンテキスト・パスの定義

WebLogic Webサービスのコンテキスト・パス(コンテキスト・ルートとも呼ばれます)は、様々な場所で指定できます。この項では、サービスのコンテキスト・パスが複数の場所で設定されている場合でも、構成に基づいてサービスの正しいコンテキスト・パスを判別する方法について説明します。

この説明では、Webサービスのコンテキスト・パスとは、WebサービスURLのhost:port部分の後にくる文字列を指します。たとえば、WebLogic WebサービスのデプロイされたWSDLが次のとおりであるとします。

http://hostname:7001/financial/GetQuote?WSDL

financialが、このWebサービスのコンテキスト・パスです。

次に、コンテキスト・パスを指定できるすべての場所の優先順位を、重要度の高い順番で示します。

  1. <module>要素および<jws>要素のcontextPath属性(jwsc Antタスクの直接の子として使用される場合)

  2. <jws><WLXXXTransport>子要素のcontextPath属性。

  3. @WLXXXTransport JWSアノテーションのcontextPath属性(「Webサービスのコンテキスト・パスとサービスURIの指定(@WLHttpTransportアノテーション)」を参照)

  4. コンテキスト・パスのデフォルト値(JWSファイルの名前。ただし、拡張子は付きません)

たとえば、JAX-RPC JWSファイルで@WLHttpTransportアノテーションを指定し、そのcontextPath属性をfinancialに設定したものと仮定します。この時、build.xmlファイルのjwsc Antタスクにおいてその他のcontextPath属性を指定していない場合、Webサービスのコンテキスト・パスはfinancialになります。

ここで、そのbuild.xmlファイルを更新し、<WLHttpTransport>子要素を、JWSファイルを指定する<jws>要素に追加し、そのcontextPath属性をfinanceに設定したものと仮定します。今度は、Webサービスのコンテキスト・パスはfinanceになります。ただし、次に<module>要素の下で<jws>要素とその子<WLHttpTransport>要素をグループ化し、そのcontextPath属性をmoneyに設定すると、Webサービスのコンテキスト・パスはmoneyになります。

JWSファイルまたはjwsc AntタスクにおいてcontextPath属性を1つも指定しない場合、Webサービスのコンテキスト・パスはデフォルト値(*.java拡張子の付かないJWSファイルの名前)になります。

複数の<jws>要素を1つの<module>要素の下でグループ化し、前述の他のオプションを使用してコンテキスト・パスを設定しない場合、<module>contextPath属性で、モジュール内のすべてのWebサービスで使用される共通のコンテキスト・パスを指定する必要があります。そうしないと、モジュール内のすべてのWebサービスのデフォルト・コンテキスト・パスが異なってしまいます(実装するJWSファイルの名前が異なることに起因します)が、1つのWARファイル内で異なるコンテキスト・パスを使用することはできません。

jwscの使用例

以下のbuild.xmlの抜粋では、JWSファイルに対してjwsc Antタスクを実行する基本的な例を示します。

  <taskdef name="jwsc"
            classname="weblogic.wsee.tools.anttasks.JwscTask" />  
  <target name="build-service">
      <jwsc
         srcdir="src"
         destdir="output/helloWorldEar">
         <jws 
            file="examples/webservices/hello_world/HelloWorldImpl.java" 
            type="JAXRPC"/>
      </jwsc>  
  </target>

この例では、

  • カレント・ディレクトリに対して相対的なoutput/helloWorldEarに、エンタープライズ・アプリケーションが展開形式で生成されます。

  • JWSファイルはHelloWorldImpl.javaという名前で、カレント・ディレクトリに対して相対的なsrc/examples/webservices/hello_worldディレクトリにあります。つまり、JWSファイルはパッケージexamples.webservices.helloWorld内にあります。

  • JAX-RPC Webサービスが生成されます。

以下の例は前の例と似ていますが、compiledWsdl属性を使用して、wsdlcが生成したアーティファクト(「WSDLから開始する」ユース・ケース)を含むJARファイルを指定している点が異なります。

  <taskdef name="jwsc"
            classname="weblogic.wsee.tools.anttasks.JwscTask" />  
  <target name="build-service">
    <jwsc
       srcdir="src"
       destdir="output/wsdlcEar">
      <jws
          file="examples/webservices/wsdlc/TemperaturePortTypeImpl.java"
           compiledWsdl="output/compiledWsdl/TemperatureService_wsdl.jar" 
           type="JAXRPC"/>
    </jwsc>
  </target>

この例では、TemperaturePortTypeImpl.javaファイルが、独自のビジネス・ロジックを含めて更新した、途中まで作成されていたJWSファイルです。compiledWsdl属性が指定されてJARファイルを指し示しているので、jwsc Antタスクでは、JARに含まれているアーティファクトを再生成することはありません。

このタスクを実際に実行するには、コマンド・ラインで次のように入力します。

  prompt> ant build-service

wsdlc WebLogic WebサービスAntタスクの実行

wsdlc AntタスクはWSDLファイルを入力として取り、WebLogic Webサービスの実装を構成するアーティファクトを生成します。次のようなアーティファクトがあります。

  • WSDLファイルで記述されたWebサービスを実装するJWSサービス・エンドポイント・インタフェース(SEI)。

  • 生成されるJWS SEIの不完全な(途中まで作成済みの)実装が含まれるJWS実装ファイル。このファイルは開発者がカスタマイズする必要があります。

  • Webサービスのパラメータと戻り値をXML表現とJava表現の間で変換するために、WebLogic Serverによって使用されるデータ・バインディング・アーティファクト。

  • (オプション)生成されるJWS SEIのJavadoc。

wsdlc AntタスクはJWS SEIとデータ・バインディング・アーティファクトを一緒にJARファイルにパッケージ化します。このJARファイルを後でjwsc Antタスクに指定します。このJARファイルを更新する必要はありません。更新するファイルはJWS実装クラスのみです。

wsdlc Antタスクを実行するには、以下のtaskdefおよびgenerate-from-wsdlターゲットをbuild.xmlファイルに追加します。

  <taskdef name="wsdlc"
           classname="weblogic.wsee.tools.anttasks.WsdlcTask"/>
  <target name="generate-from-wsdl">
    <wsdlc
         srcWsdl="WSDL_file"
         destJwsDir="JWS_interface_directory"
         destImplDir="JWS_implementation_directory"
         packageName="Package_name" 
         type="WebService_type"/>
   </target>

各項目の説明は次のとおりです。

  • WSDL_file - 部分的な実装を生成する元となるWSDLファイルの名前(絶対パスまたは相対パスを含めます)。

  • JWS_interface_directory - JWS SEIおよびデータ・バインディング・アーティファクトを含むJARファイルの生成先となるディレクトリ。

    生成されるJARファイルの名前はWSDLFile_wsdl.jar (WSDLFileはWSDLファイルのルート名)。たとえば、file属性に対して指定したWSDLファイルの名前がMyService.wsdlの場合、生成されるJARファイルはMyService_wsdl.jarとなります。

  • JWS_implementation_directory - 途中まで作成済みのJWS実装ファイルの生成先となる最上位ディレクトリ。ファイルはパッケージ名に対応するサブディレクトリ階層に生成されます。

    生成されるJWSファイルの名前はPortTypeImpl.javaです。PortTypeは、Webサービスを生成するWSDLファイル内の<portType>要素のname属性です。たとえば、ポート・タイプ名がMyServicePortTypeの場合、JWS実装ファイルはMyServicePortTypeImpl.javaという名前になります。

  • Package_name - 生成されるJWS SEIおよび実装ファイルの生成先となるパッケージ。この属性を指定しない場合、wsdlc Antタスクは、WSDLのtargetNamespaceに基づいてパッケージ名を生成します。

  • WebService_type - Webサービスの種類。この値は、JAXWSまたはJAXRPCに設定できます。

必須のtaskdef要素では、wsdlc Antタスクの完全修飾クラス名を指定します。

wsdlc Antタスクでは、srcWsdlおよびdestJwsDir属性のみが必須です。ただし、通常は、プログラミングを容易にするために、途中まで作成済みのJWSファイルを生成します。WSDLファイルのtargetNamespaceが、読取り可能なパッケージ名への変換に適していない場合に備えて、パッケージ名を明示的に指定することをお薦めします。

以下のbuild.xmlの抜粋では、WSDLファイルに対してwsdlc Antタスクを実行する例を示します。

  <taskdef name="wsdlc"
           classname="weblogic.wsee.tools.anttasks.WsdlcTask"/>
  <target name="generate-from-wsdl">
      <wsdlc
           srcWsdl="wsdl_files/TemperatureService.wsdl"
           destJwsDir="output/compiledWsdl"
           destImplDir="impl_output"
           packageName="examples.webservices.wsdlc" 
           type="JAXRPC" />
  </target>

この例では、

  • 既存のWSDLファイルはTemperatureService.wsdlという名前で、build.xmlファイルを格納するディレクトリのwsdl_filesサブディレクトリにあります。

  • JWS SEIとデータ・バインディング・アーティファクトを含むJARファイルはoutput/compiledWsdlディレクトリに生成され、JARファイルの名前はTemperatureService_wsdl.jarです。

  • 生成されるJWSファイルのパッケージ名はexamples.webservices.wsdldです。

  • 途中まで作成済みのJWSファイルは、カレント・ディレクトリに対して相対的なimpl_output/examples/webservices/wsdlcディレクトリに生成されます。

  • WSDLファイル内のポート・タイプ名がTemperaturePortTypeの場合、JWS実装ファイルの名前はTemperaturePortTypeImpl.javaになります。

  • JAX-RPC Webサービスが生成されます。

このタスクを実際に実行するには、コマンド・ラインで次のように入力します。

  prompt> ant generate-from-wsdl

詳細は、『Oracle WebLogic Server WebLogic Webサービス・リファレンス』のwsdlcに関する項を参照してください。

wsdlcで生成される途中まで作成済みのJWS実装クラス・ファイルの更新

wsdlc Antタスクは、destImplDir属性で指定されたディレクトリに、途中まで作成済みのJWS実装ファイルを生成します。ファイルの名前はPortTypeImpl.javaです(PortTypeは元のWSDLにあるportTypeの名前)。このクラス・ファイルには、独自のビジネス・ロジックを除いて、Webサービスへコンパイルするために必要なすべてのものが含まれています。

JWSクラスは、WSDLファイルに対応するJWS Webサービス・エンドポイント・インタフェースを実装しています。このJWS SEIもwsdlcによって生成され、他のアーティファクト(WSDL内のXMLスキーマ・データ型のJava表現など)が含まれているJARファイル内に置かれています。JWSクラスのパブリック・メソッドはWSDLファイル内の操作に対応しています。

wsdlc Antタスクは、JWS実装クラスに@WebServiceおよび@WLHttpTransportアノテーションを自動的に含めます。属性の値はWSDL内の関連する値に対応しています。たとえば、@WebServiceserviceName属性は、WSDLファイル内の<service>要素のname属性と同じです。@WLHttpTransportcontextPathおよびserviceUri属性は共に、WSDL内の<address>要素のlocation属性で指定されたエンドポイント・アドレスを構成します。

JWSファイルを更新するときは、該当のWebサービス操作が希望どおりに動作するように、メソッドにJavaコードを追加します。通常、生成されるJWSファイルには、コードを追加すべき場所に次のようなコメントがあります。

  //replace with your impl here

また、他のJWSアノテーションをファイルに追加することもできますが、以下のような制限があります。

  • JWS実装ファイルに含めることができる標準(JSR-181)のjavax.jwsパッケージのアノテーションは、@WebService@HandlerChain@SOAPMessageHandler、および@SOAPMessageHandlersのみです。javax.jwsパッケージの他のJWSアノテーションを指定し、JWSファイルをWebサービスにコンパイルしようとすると、jwsc Antタスクはエラーを返します。

  • @WebServiceアノテーションでは、serviceNameendpointInterface、およびtargetNamespace属性のみを指定できます。まれに、WSDLファイルに複数の<service>要素が指定されていることがあります。その場合は、serviceName属性を使用して、wsdlc Antタスクで使用していたものとは別の<service> WSDL要素を指定します。wsdlc Antタスクで生成されたJWS SEIを指定するには、endpointInterface属性を使用します。WSDLサービスのネームスペースを指定するには、targetNamespace属性を使用します。JWS SEIネームスペースと異なるネームスペースを指定できます。

  • 必要に応じて、WebLogic固有のJWSアノテーションを指定することができます。

JWSファイルを更新したら、wsdlcの出力ディレクトリにそのまま置いておかないで、正式なソースの場所に移動することをお薦めします。

以下の例は、「サンプルWSDLファイル」のWSDLからwsdlcが生成したJWS実装ファイルです。太字のテキストは、Webサービスの1つの操作(getTemp)を実装するJavaコードを追加する場所を示しています。

package examples.webservices.wsdlc;
import javax.jws.WebService;
 import weblogic.jws.*;
/**
  * TemperaturePortTypeImpl class implements web service endpoint interface 
  * TemperaturePortType */
@WebService(
   serviceName="TemperatureService",
   endpointInterface="examples.webservices.wsdlc.TemperaturePortType")
@WLHttpTransport(
   contextPath="temp",
   serviceUri="TemperatureService",
   portName="TemperaturePort")
public class TemperaturePortTypeImpl implements TemperaturePortType {
  public TemperaturePortTypeImpl() {
  }
  public float getTemp(java.lang.String zipcode)
  {
    //replace with your impl here
     return 0;
  }
}

WebLogic Webサービスのデプロイとアンデプロイ

Webサービスはエンタープライズ・アプリケーションとしてパッケージ化されるので、Webサービスのデプロイとは、該当するEARファイルまたは展開されたディレクトリをデプロイすることになります。

WebLogic Server管理コンソールの使用からweblogic.Deployer Javaユーティリティの使用まで、WebLogicアプリケーションのデプロイには多様な方法があります。開発環境とは異なり、本番環境にアプリケーションをデプロイする際には、他にも様々な問題を考慮する必要があります。デプロイメントの詳細は、『Oracle WebLogic Serverへのアプリケーションのデプロイ』を参照してください。

このガイドでは、開発の性質上、Webサービスの2つのデプロイ方法についてのみ説明します。

wldeploy Antタスクを使用したWebサービスのデプロイ

反復的な開発プロセスの一環としてWebサービスをデプロイする最も簡単な方法は、wldeploy WebLogic Antタスクを実行するターゲットを、jwsc Antタスクが含まれる同じbuild.xmlファイルに追加することです。Javaコードを追加してサービスを再生成するたびに、サービスの再デプロイとテストを繰返し行えるように、Webサービスをデプロイするターゲットとアンデプロイするターゲットの両方を追加することができます。

wldeploy Antタスクを使用するには、以下のターゲットをbuild.xmlファイルに追加します。

  <target name="deploy">
      <wldeploy action="deploy"
         name="DeploymentName"
         source="Source" user="AdminUser"
         password="AdminPassword" 
         adminurl="AdminServerURL"
         targets="ServerName"/>
  </target>

各項目の説明は次のとおりです。

  • DeploymentName - エンタープライズ・アプリケーションのデプロイメント名、または、WebLogic Server管理コンソールでデプロイメントのリストに表示される名前。

  • Source - デプロイするエンタープライズ・アプリケーションのEARファイルまたは展開されたディレクトリの名前。デフォルトでは、jwsc Antタスクが展開されたエンタープライズ・アプリケーション・ディレクトリを生成します。

  • AdminUser - 管理ユーザー名。

  • AdminPassword - 管理パスワード。

  • AdminServerURL - 管理サーバーのUrl。通常はt3://localhost:7001です。

  • ServerName - WebサービスをデプロイするWebLogic Serverインスタンスの名前。

たとえば、以下のwldeployタスクでは、エンタープライズ・アプリケーションの展開されたディレクトリ(カレント・ディレクトリに対して相対的なoutput/ComplexServiceEarにある)がmyServer WebLogic Serverインスタンスにデプロイされることを指定します。デプロイメント名はComplexServiceEarです。

  <target name="deploy">
    <wldeploy action="deploy"
       name="ComplexServiceEar"
       source="output/ComplexServiceEar" user="weblogic"
       password="weblogic" verbose="true"
       adminurl="t3://localhost:7001"
       targets="myserver"/>
  </target>

Webサービスを実際にデプロイするには、コマンド・ラインでdeployターゲットを実行します。

  prompt> ant deploy

ソース・コードに変更を加えてからWebサービスを再デプロイできるように、Webサービスを簡単にアンデプロイするターゲットを追加することもできます。

  <target name="undeploy">
    <wldeploy action="undeploy"
       name="ComplexServiceEar"
       user="weblogic"
       password="weblogic" verbose="true"
       adminurl="t3://localhost:7001"
       targets="myserver"/>
  </target>

Webサービスをアンデプロイするときは、source属性を指定する必要はなく、名前によってアンデプロイします。

管理コンソールを使用したWebサービスのデプロイ

WebLogic Server管理コンソールを使用してWebサービスをデプロイするには、最初に、ブラウザで次のURLを使用してWebサービスを呼び出します。

  http://host:port/console

各項目の説明は次のとおりです。

  • host WebLogic Serverが動作しているコンピュータの名前。

  • port - WebLogic Serverがリスニングしているポート番号(デフォルト値は7001です)。

次にデプロイメント・アシスタントを使用して、エンタープライズ・アプリケーションをデプロイします。WebLogic Server管理コンソールの詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプを参照してください。

WebサービスのWSDLの参照

WebサービスのWSDLをブラウザで表示して、Webサービスが適切にデプロイされていることを確認できます。

次のURLは、WebサービスのWSDLをブラウザで表示する方法を示しています。

http://host:port/contextPath/serviceUri?WSDL

各項目の説明は次のとおりです。

  • host - WebLogic Serverが動作しているコンピュータの名前(localhostなど)。

  • port - WebLogic Serverがリスニングしているポート番号(デフォルト値は7001です)。

  • contextPath - Webサービスのコンテキスト・ルート。コンテキスト・ルートを設定する場所としては、@WLHttpTransportアノテーションのcontextPath属性、jwsc<WLHttpTransport><module>、または<jws>要素があり、オーバーライドの順位が決まっています。第3章「WebLogic Webサービスのコンテキスト・パスの定義」を参照してください。

  • serviceUri - Webサービスを実装するJWSファイルの@WLHttpTransport JWSアノテーションのserviceUri属性の値、またはjwsc Antタスクの<WLHttpTransport>子要素の値です; 前者より後者が優先されます。JWSファイルまたはjwsc AntタスクにおいてserviceUri属性を何も指定しない場合、WebサービスのserviceUriはデフォルト値(*.java拡張子の付かないJWSファイルの名前)になります。


たとえば、Webサービスを実装するJWSファイルで以下の@WLHttpTransportアノテーションを指定したとします。

  ...
  @WLHttpTransport(contextPath="complex", 
                    serviceUri="ComplexService",
                    portName="ComplexServicePort")
  /**
    * This JWS file forms the basis of a WebLogic Web Service.
    *
    */
  public class ComplexServiceImpl {
  ...

ここでは、jwsc Antタスクの<WLHttpTransport>要素と同等の属性を設定し、contextPathまたはserviceURIの値をオーバーライドしないこととします。そして、Webサービスがarielというホストのデフォルトのポート番号(7001)で実行されているとすると、そのWebサービスのWSDLを表示するURLは次のようになります。

  http://ariel:7001/complex/ComplexService?WSDL

動的なWSDLで指定されたサーバー・アドレスの構成

デプロイ済のWebサービスのWSDL(動的なWSDLともいいます)には、特定のWebサービス・ポートにアドレス(URI)を割り当てる<address>要素が含まれています。たとえば、次に示すWSDLの抜粋には、ComplexServiceというデプロイ済みのWebLogic Webサービスの一部が記述されています。

<definitions name="ComplexServiceDefinitions"
              targetNamespace="http://example.org">
...
  <service name="ComplexService">
     <port binding="s0:ComplexServiceSoapBinding" name="ComplexServicePort">
       <s1:address location="http://myhost:7101/complex/ComplexService"/>
     </port>
   </service>
</definitions>

この例では、ComplexService WebサービスにComplexServicePortというポートが含まれており、そのアドレスはhttp://myhost:7101/complex/ComplexServiceとなっています。

WebLogic Serverは、このアドレスのcomplex/ComplexServiceの部分を、@WLXXXTransportアノテーションまたはjwsc要素のcontextPathおよびserviceURI属性を調べることによって決定します(「WebサービスのWSDLの参照」に説明があります)。しかし、WebLogic Serverがアドレスのプロトコルおよびホスト部分(この例ではhttp://myhost:7101)を決定するために使用する方法は、次で説明するとおり、より複雑です。この項では、わかりやすいように、アドレスのプロトコルとホストの部分をまとめてサーバー・アドレスと呼ぶことにします。

WebLogic Serverがデプロイ済みのWebサービスの動的なWSDL内にパブリッシュするサーバー・アドレスは、そのWebサービスをHTTP/SやJMSで呼び出せるかどうか、プロキシ・サーバーを構成しているかどうか、Webサービスがクラスタにデプロイされているかどうか、Webサービスが実際にはコールバック・サービスであるかどうかによって異なります。

以下では、これらの構成の違いに応じたサーバー・アドレスの決定方法について説明します。また、ニーズに合わせて構成を変更するための手順説明へのリンクも示します。

なお、ここでは、クラスタとスタンドアロン・サーバーを、WebLogic Server管理コンソールを使用して構成することを前提としています。

Webサービスがコールバック・サービスでなく、HTTP/Sを使用して呼び出せる場合

  1. Webサービスがクラスタにデプロイされており、クラスタのFrontend HostFrontend HTTP Port、およびFrontend HTTPS Portが設定されている場合は、動的なWSDLのサーバー・アドレスにこれらの値が使用されます。

    Oracle WebLogic Server管理コンソール・オンライン・ヘルプクラスタのHTTP設定の構成に関する項を参照してください。

  2. 上記のクラスタ値は設定されていないが、Webサービスがデプロイされている個々のサーバーFrontend HostFrontend HTTP Port、およびFrontend HTTPS Portの値が設定されている場合は、サーバー・アドレスにこれらの値が使用されます。

    Oracle WebLogic Server管理コンソール・オンライン・ヘルプHTTPプロトコルの構成に関する項を参照してください。

  3. これらの値がクラスタにも個々のサーバーにも設定されていない場合は、動的なWSDL内のWSDLリクエストのサーバー・アドレスが使用されます。

Web Serviceがコールバック・サービスでなく、JMSトランスポートを使用して呼び出せる場合

  1. Webサービスがクラスタにデプロイされており、Cluster Addressが設定されている場合は、動的なWSDLのサーバー・アドレスにこの値が使用されます。

    Oracle WebLogic Server管理コンソール・オンライン・ヘルプクラスタの構成に関する項を参照してください。

  2. クラスタ値が設定されていないか、Webサービスがスタンドアロン・サーバーにデプロイされており、WebサービスがデプロイされているサーバーのListen Addressが設定されている場合は、サーバー・アドレスにこの値が使用されます。

    Oracle WebLogic Server管理コンソール・オンライン・ヘルプリスニング・アドレスの構成に関する項を参照してください。

Webサービスがコールバック・サービスである場合

  1. コールバック・サービスがクラスタにデプロイされており、クラスタのFrontend HostFrontend HTTP Port、およびFrontend HTTPS Portが設定されている場合は、動的なWSDLのサーバー・アドレスにこれらの値が使用されます。

    Oracle WebLogic Server管理コンソール・オンライン・ヘルプクラスタのHTTP設定の構成に関する項を参照してください。

  2. コールバック・サービスがクラスタまたはスタンドアロン・サーバーにデプロイされており、上記のクラスタ値は設定されていないが、コールバック・サービスがデプロイされている個々のサーバーFrontend HostFrontend HTTP Port、およびFrontend HTTPS Portの値が設定されている場合は、サーバー・アドレスにこれらの値が使用されます。

    Oracle WebLogic Server管理コンソール・オンライン・ヘルプHTTPプロトコルの構成に関する項を参照してください。

  3. コールバック・サービスがクラスタにデプロイされており、上記のどの値も設定されていないがCluster Addressが設定されている場合は、サーバー・アドレスにこの値が使用されます。

    Oracle WebLogic Server管理コンソール・オンライン・ヘルプクラスタの構成に関する項を参照してください。

  4. 上記のどの値も設定されていないが、コールバック・サービスがデプロイされているサーバーのListen Addressが設定されている場合は、サーバー・アドレスにこの値が使用されます。

    Oracle WebLogic Server管理コンソール・オンライン・ヘルプリスニング・アドレスの構成に関する項を参照してください。

Webサービスがプロキシ・サーバーを使用して呼び出せる場合

必須ではありませんが、Webサービスがデプロイされているクラスタまたは個々のサーバーのいずれかのFrontend HostFrontEnd HTTP Port、およびFrontend HTTPS Portがプロキシ・サーバーを指すように明示的に設定することをお薦めします。

Oracle WebLogic Server管理コンソール・オンライン・ヘルプクラスタのHTTP設定の構成またはHTTPプロトコルの構成に関する項を参照してください。

Webサービスのテスト

WebLogic Webサービスのデプロイメントが完了したら、WebLogic Server管理コンソールに含まれているWebサービス・テスト・クライアントを使用して、コードを記述することなくサービスをテストできます。複合型を持つWebサービスや、WebLogic Serverの高度な機能(会話など)を使用するWebサービスも含めて、Webサービスを素早く簡単にテストできます。テスト・クライアントはリクエストの完全なログを自動的に保持しているので、ユーザーは以前の呼出しに戻って結果を表示することができます。

デプロイしたWebサービスをWebLogic Server管理コンソールを使用してテストするには、次の手順に従います。

  1. 次のURLを使用して、ブラウザでWebLogic Server管理コンソールを呼び出します。

    http://host:port/console
    

    各項目の説明は次のとおりです。

    • host WebLogic Serverが動作しているコンピュータの名前。

    • port - WebLogic Serverがリスニングしているポート番号(デフォルト値は7001です)。

  2. Oracle WebLogic Server管理コンソール・オンライン・ヘルプWebサービスのテストに関する項で説明されている手順に従います。

WebサービスのWebLogic分割開発ディレクトリ環境への統合

この項では、Webサービスの開発をWebLogic分割開発ディレクトリ環境に統合する方法について説明します。このWebLogic機能について理解していること、標準のJava Platform, Enterprise Edition (Java EE)バージョン5アプリケーションおよびモジュール(EJBやWebアプリケーションなど)の開発用にこのタイプの環境を設定済みであること、Webサービスの開発が含まれるようにbuild.xmlファイルを更新しようとしていることを前提としています。

WebLogic分割開発ディレクトリ環境の詳細は、『Oracle WebLogic Serverアプリケーションの開発』のアプリケーションの分割開発ディレクトリの作成に関する項およびWebLogic Serverと一緒にオプションでインストールされるsplitdir/helloWorldEarサンプルを参照してください。サンプルは、ORACLE_HOME/\wlserver\samples\server\examples\src\examples\splitdirディレクトリにあります。ORACLE_HOMEはWebLogic Serverがインストールされているディレクトリを示します。WebLogic Serverのサンプル・コードの詳細は、『Oracle WebLogic Serverの理解』のサンプル・アプリケーションとサンプル・コードに関する項を参照してください。

  1. メイン・プロジェクト・ディレクトリ内に、Webサービスを実装するJWSファイルを格納するためのディレクトリを作成します。

    たとえば、メイン・プロジェクト・ディレクトリが/src/helloWorldEarである場合、/src/helloWorldEar/helloWebServiceというディレクトリを作成します。

    prompt> mkdir /src/helloWorldEar/helloWebService
    
  2. helloWebServiceディレクトリの下に、JWSファイルのパッケージ名に対応するディレクトリ階層を作成します。

    たとえば、JWSファイルがexamples.splitdir.helloパッケージにパッケージ化されている場合は、examples/splitdir/helloというディレクトリ階層を作成します。

    prompt> cd /src/helloWorldEar/helloWebService
     prompt> mkdir examples/splitdir/hello
    
  3. メイン・プロジェクト・ディレクトリに作成したWebサービスのサブディレクトリ(この例では/src/helloWorldEar/helloWebService/examples/splitdir/hello)にJWSファイルを置きます。

  4. エンタープライズ・アプリケーションをビルドするbuild.xmlファイル内に、「jwsc WebLogic WebサービスAntタスクの実行」の説明に従ってjwsc WebLogic WebサービスAntタスクの呼出しを追加して、Webサービスをビルドする新しいターゲットを作成します。

    jwscsrcdir属性は、JWSファイルを格納する最上位ディレクトリ(この例ではhelloWebService)を指すようにします。jwscdestdir属性は、wlcompileに指定するのと同じ宛先ディレクトリを指すようにします。次の例を参照してください。

      <target name="build.helloWebService">
        <jwsc
             srcdir="helloWebService"
             destdir="destination_dir"
             keepGenerated="yes" >
            <jws file="examples/splitdir/hello/HelloWorldImpl.java" 
              type="JAXRPC" />
        </jwsc>
      </target>
    

    この例のdestination_dirは、他の分割開発ディレクトリ環境のAntタスク(wlappcwlcompileなど)も使用する宛先ディレクトリを表します。

  5. Webサービス関連のターゲットを呼び出すように、build.xmlファイルのメインのbuildターゲットを更新します。

      <!-- Builds the entire helloWorldEar application -->
      <target name="build"
         description="Compiles helloWorldEar application and runs appc"
         depends="build-helloWebService,compile,appc" />
    

    注意:

    エンタープライズ・アプリケーションを実際にビルドするときは、wlappc Antタスクを実行するに、jwsc Antタスクを実行するようにしてください。wlappcを正常に実行するには、jwscによって生成されるアーティファクトの一部が必要になるためです。この例の場合は、appcターゲットよりもbuild-helloWebServiceターゲットを指定する必要があります。

  6. wlcompileおよびwlappc Antタスクを使用してエンタープライズ・アプリケーション全体をコンパイルおよび検証する場合は、両方のAntタスクでWebサービスのソース・ディレクトリを除外するようにしてください。これは、jwsc AntタスクでWebサービスのコンパイルとパッケージ化をすでに扱っているからです。例:

    <target name="compile">
       <wlcompile srcdir="${src.dir}" destdir="${dest.dir}"
                excludes="appStartup,helloWebService">
        ...
        </wlcomplile>
    ...
     </target>
    <target name="appc">
       <wlappc source="${dest.dir}" deprecation="yes" debug="false"
                excludes="helloWebService"/>
    </target>
    
  7. META-INFプロジェクト・ソース・ディレクトリにあるapplication.xmlファイルを更新して、<web>モジュールを追加し、jwsc Antタスクによって生成されるWARファイルの名前を指定します。

    たとえば、helloWorld Webサービスのapplication.xmlファイルに以下のように追加します。

    <application>
    ...
      <module>
         <web>
           <web-uri>examples/splitdir/hello/HelloWorldImpl.war</web-uri>
           <context-root>/hello</context-root>
         </web>
       </module>
    ...
    </application>
    

    注意:

    jwsc Antタスクでは通常、Webサービスを実装するJWSファイルからWebアプリケーションWARファイルが生成されます。ただし、JWSファイルにjavax.ejb.SessionBeanが明示的に実装されている場合は例外です。その場合は、application.xmlファイルに<ejb>モジュール要素を追加する必要があります。

これで、分割開発ディレクトリ環境は、Webサービスの開発を含むように更新されました。エンタープライズ・アプリケーション全体を再ビルドしてデプロイするときに、WebサービスもEARの一部としてデプロイされます。Webサービスは、「WebサービスのWSDLの参照」で説明されている標準的な方法で呼び出します。