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

前
 
次
 

3 WebLogic 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 Fusion Middleware Oracle WebLogic Server Webサービス・リファレンス』のWebサービスのアノテーション・サポートに関する項を参照してください。このプログラミング・モデルの詳細については、『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの紹介』のWebLogic Webサービスの構造に関する項を参照してください。

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

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

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

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

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

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


注意:

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


次の各手順は、Webサービスの高度な機能を使用するようにドメインを自動的に構成するためのドメインの作成方法および拡張方法を示しています。構成ウィザードを使用してWebLogic Serverドメインを作成および更新する手順の詳細は、『Oracle 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章「使用例とサンプル」を参照してください。

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


注意:

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


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

#
手順 説明

1

環境を設定します。

コマンド・ウィンドウを開いて、ドメイン・ディレクトリのbinサブディレクトリにあるsetDomainEnv.cmd (Windows)またはsetDomainEnv.sh (UNIX)コマンドを実行します。WebLogic Serverドメインのデフォルトの場所は、MW_HOME/user_projects/domains/domainNameです。MW_HOMEは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サービスを呼び出すクライアント・アプリケーションの記述については、第6章「Webサービスの呼出し」を参照してください。

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

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

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

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


注意:

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


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

#
手順 説明

1

環境を設定します。

コマンド・ウィンドウを開いて、ドメイン・ディレクトリのbinサブディレクトリにあるsetDomainEnv.cmd (Windows)またはsetDomainEnv.sh (UNIX)コマンドを実行します。WebLogic Serverドメインのデフォルトの場所は、MW_HOME/user_projects/domains/domainNameです。MW_HOMEは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章「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によって生成されるアーティファクトには、以下のものがあります。

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

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

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>

説明:

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

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

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

jwscの高度な使用方法

この項では、jwsc Antタスクの非常に簡単な使用例を紹介します。ただし、このタスクには、非常に有用なツールにするための追加の属性と子要素を含めます。以下のような使用方法が考えられます。

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

  • クライアント・アプリケーションがWebサービスを呼び出すときに使用できるトランスポート形式(HTTP/HTTPS/JMS)を指定します。状況によっては、既存の@WLXXXTransportアノテーションをすべてオーバーライドすることも可能です。

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

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

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

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

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

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>

説明:

必須の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>

この例では:

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

  prompt> ant generate-from-wsdl

詳細は、『Oracle Fusion Middleware Oracle WebLogic Server 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ファイルを更新したら、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.Deployer Javaユーティリティの使用まで、WebLogicアプリケーションのデプロイには多様な方法があります。開発環境とは異なり、本番環境にアプリケーションをデプロイする際には、他にも様々な問題を考慮する必要があります。デプロイメントの詳細な説明については、『Oracle Fusion Middleware 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 - エンタープライズ・アプリケーションのデプロイメント名、または、管理コンソールでデプロイメントのリストに表示される名前。

  • 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サービスのデプロイ

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

  http://host:port/console

説明:

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

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

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

WebサービスのWSDLの参照

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

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

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

説明:


たとえば、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 Fusion Middleware Oracle WebLogic Server管理コンソール・ヘルプクラスタのHTTP設定の構成に関する項を参照してください。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Webサービスのテスト

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

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

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

    http://host:port/console
    

    説明:

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

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

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

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

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

WebLogic分割開発ディレクトリ環境の詳細は、『Oracle Fusion Middleware Oracle WebLogic Serverアプリケーションの開発』の分割開発ディレクトリ環境の作成に関する項およびWebLogic Serverと一緒にインストールされるsplitdir/helloWorldEarサンプルを参照してください。サンプルは、WL_HOME/samples/server/examples/src/examplesディレクトリにあります。WL_HOMEは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の参照」で説明されている標準的な方法で呼び出します。