ナビゲーションをスキップ

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

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

Ant タスクを使用した WebLogic Web サービスのアセンブル

この章では、さまざまな Ant タスクを使用して WebLogic Web サービスをアセンブルおよびデプロイする方法を説明します。

 


Ant タスクを使用した WebLogic Web サービスのアセンブルの概要

WebLogic Web サービスのアセンブルとは、サービスのすべてのコンポーネント (EJB JAR ファイル、SOAP メッセージ ハンドラ クラスなど) の収集、web-services.xml デプロイメント記述子ファイルの生成、および WebLogic Server にデプロイできるエンタープライズ アプリケーション アーカイブ (Enterprise Application Archive: EAR) ファイルへのそれらすべてのパッケージ化を指します。

Ant タスクを使用した WebLogic Web サービスのアセンブルには次の 2 通りの方法があります。

Web サービスおよび Ant タスクの詳細なリファレンス情報は、「Web サービス Ant タスクとコマンドライン ユーティリティ」を参照してください。

注意 :WebLogic Server の Java Ant ユーティリティでは WL_HOME\server\bin ディレクトリ (WL_HOME は WebLogic Platform がインストールされている最上位ディレクトリ) にある ant (UNIX) または ant.bat (Windows) コンフィグレーション ファイルを使用して各種の Ant 固有変数を設定します。これらの Ant 変数を更新する必要がある場合、使用しているオペレーティング システム用のコンフィグレーション ファイルを変更します。

 


WebLogic Web サービスのアセンブルの例

WebLogic Server の WL_HOME/samples/server/examples/src/examples/webservices ディレクトリには、WebLogic Web サービスのアセンブルの例があります。WL_HOME は、WebLogic Platform のメイン ディレクトリです。上記の例の構築と実行についての詳細な説明は、次の Web ページを参照してください。

WL_HOME/samples/server/examples/src/examples/webservices/package-summary.html

 


servicegen Ant タスクを使用した WebLogic Web サービスのアセンブル

servicegen Ant タスクは、EJB JAR ファイルまたは Java クラスのリストを入力として受け取り、必要なすべての Web サービス コンポーネントを作成して、デプロイ可能な EAR ファイルにパッケージ化します。

servicegen Ant タスクの機能

具体的には、servicegen Ant タスクは、次のタスクを実行します。

WebLogic Web サービスの自動アセンブル : 主な手順

servicegen Ant タスクを使用して Web サービスを自動的にアセンブルするには次を行います。

  1. 環境を設定します。
  2. Windows NT では、ドメイン ディレクトリにある setEnv.cmd コマンドを実行します。WebLogic Server ドメインのデフォルトの位置は、BEA_HOME\user_projects\domains\domainName です。BEA_HOME は BEA Products の最上位のインストール ディレクトリで、domainName はドメインの名前です。

    UNIX では、ドメイン ディレクトリにある setEnv.sh コマンドを実行します。WebLogic Server ドメインのデフォルトの位置は、BEA_HOME/user_projects/domains/domainName です。BEA_HOME は BEA Products の最上位のインストール ディレクトリで、domainName はドメインの名前です。

  3. Web サービスのコンポーネントを格納するステージング ディレクトリを作成します。
  4. Web サービス オペレーションが、EJB を使用して実装される場合は、サポートする EJB とともにそれらを EJB JAR ファイルにパッケージ化します。オペレーションが Java クラスを使用して実装される場合は、クラス ファイルにコンパイルします。
  5. 詳細については、『WebLogic Server アプリケーションの開発』を参照してください。

  6. EJB JAR ファイル、Java クラス ファイルのうちの一方または両方をステージング ディレクトリにコピーします。
  7. ステージング ディレクトリに、servicegen Ant タスクの呼び出しを含む Ant ビルド ファイル (デフォルトのファイル名は build.xml) を作成します。
  8. servicegen Ant タスクを指定する方法の詳細については、「servicegen Ant タスクを指定するビルド ファイルの作成」を参照してください。

    Ant ビルド ファイルの一般的な情報については、「http://jakarta.apache.org/ant/manual/」 を参照してください。

    注意 :Apache Jakarta Web サイトでは、Ant の最新バージョン向けのオンライン ドキュメントのみが公開されています。公開されているバージョンが WebLogic Server にバンドルされている Ant のバージョンとは異なる場合もあります。WebLogic Server にバンドルされている Ant のバージョンを判別するには、WebLogic 環境の設定後に次のコマンドを実行します。

    prompt> ant -version 

    特定のバージョンの Ant ドキュメントを参照するには、http://archive.apache.org/dist/ant/binaries/ から Ant zip ファイルをダウンロードし、ドキュメントを解凍してください。

  9. autotype Ant タスクを使用して既存の XML スキーマ ファイルから非組み込みデータ型情報を生成した後、servicegen Ant タスクの typeMappingFile 属性で autotype によって生成された types.xml ファイルを指定し、それを servicegen によって生成された情報と結合した場合に、元の XML スキーマ ファイルで <include> 要素を使用して追加の XML スキーマ ファイルが指定されているときには、これらの XML スキーマ ファイルを生成された EAR ファイルにある Web サービス Web アプリケーション WAR ファイルのルート ディレクトリにコピーする必要があります。wspackage Ant タスクを使用して、この手順を行うことができます。
  10. servicegen Ant タスクを排他的に使用して非組み込みデータ型コンポーネントを生成している場合は、この手順は不要です。

    詳細については、「wspackage Ant タスクを実行する」を参照してください。

  11. ステージング ディレクトリで ant と入力し、必要であればこのコマンドにターゲットの引数を渡して (引数を取るように build.xml を作成した場合)、build.xml ファイルで指定された Ant タスク (1 つまたは複数) を実行します。
  12. prompt> ant

    Ant タスクによってステージング ディレクトリに Web サービス EAR ファイルが生成されるので、WebLogic Server へのデプロイが可能になります。

servicegen Ant タスクを指定するビルド ファイルの作成

次の例、build.xml ファイルは、製品例、examples.webservices.basic.statelessession から引用したファイルで、servicegen Ant タスクを実行することを指定しています。

<project name="buildWebservice" default="ear">
<target name="ear">
<servicegen
destEar="ws_basic_statelessSession.ear"
contextURI="WebServices" >
<service
ejbJar="HelloWorldEJB.jar"
targetNamespace="http://www.bea.com/webservices/basic/statelesSession"
serviceName="HelloWorldEJB"
serviceURI="/HelloWorldEJB"
generateTypes="True"
expandMethods="True"
style="rpc" >
</service>
</servicegen>
</target>
</project>

この例では、servicegen Ant タスクは、HelloWorldEJB という Web サービスを 1 つ作成します。この Web サービスを識別するための URI は /HelloWorldEJB です。Web サービスにアクセスするための完全 URL は次のとおりです。

http://host:port/WebServices/HelloWorldEJB

servicegen Ant タスクは、destEar 属性によって指定された ws_basic_statelessSession.ear という EAR ファイルに Web サービスをパッケージ化します。EAR ファイルには、web-services.war (デフォルト名) という、web-services.xml デプロイメント記述子ファイルなどの Web サービス コンポーネントがすべて格納された WAR ファイルが含まれています。

generateTypes 属性は、True に設定されているので、WAR ファイルには、EJB メソッドに対するパラメータおよび戻り値として使用される非組み込みデータ型用のシリアライゼーション クラスも入っています。Ant タスクは、HelloWorldEJB.jar ファイルにある EJB を参照して、パブリック オペレーションと非組み込みデータ型を探し、それに対応して、web-services.xml オペレーションとデータ型マッピングのセクションを更新します。expandMethods 属性も True に設定されているので、Ant タスクは、各パブリック EJB メソッドを別個のオペレーションとして web-services.xml ファイルにリストします。

style="rpc" 属性は、Web サービスのオペレーションがすべて RPC 指向であることを指定します。Web サービスのオペレーションがドキュメント指向の場合は、style="document" を指定します。

注意 :EAR ファイルではなく、.ear サフィックスを持たない値を servicegendestEar 属性に指定して展開ディレクトリを作成することをお勧めします。その展開ディレクトリは、後で、Web サービスがデプロイできる状態になったときに EAR ファイルにパッケージ化できます。

 


個別用途の Ant タスクを使用した WebLogic Web サービスのアセンブル

servicegen Ant タスクは、ほとんどの WebLogic Web サービスのアセンブルで適切に使用できます。ただし、Web サービスをアセンブルする方法についてもっと細かくコントロールする場合は、個別用途の Ant タスクを使用できます。たとえば、source2wsddweb-services.xml ファイルを生成し、情報を追加する必要がある場合にこのファイルを手動で更新できます。

以下の節では、Java または XML スキーマをベースとして Web サービスをアセンブルするための方法について説明します。

Java を使用して Web サービスをアセンブルする

次の手順では、すでにバックエンド コンポーネントと非組み込みデータ型の Java コードを記述して Web サービスを作成してあること、および、個別用途の Ant タスクを使用して、非組み込みデータ型を表現する XML スキーマと他の Web サービス コンポーネント (web-services.xml など) を生成することを前提としています。

  1. Web サービスを実装する Java バックエンド コンポーネントを、それぞれのパッケージにパッケージ化またはコンパイルします。たとえば、ステートレス セッション EJB は EJB JAR ファイルにパッケージ化し、Java クラスはクラス ファイルにパッケージ化します。
  2. 手順の詳細については、『WebLogic Server アプリケーションの開発』を参照してください。

  3. Web サービス デプロイメント記述子ファイル (web-services.xml) を作成します。
  4. ステートレス セッション EJB または Java クラスを使用して Web サービスを実装している場合は、source2wsdd Ant タスクを使用して web-services.xml ファイルを生成できます。詳細については、「source2wsdd Ant タスクを実行する」を参照してください。

    wsdl2Service Ant タスクを使用して既存の WSDL ファイルから Web サービスの部分的な実装を生成した場合は、その Ant タスクによって web-services.xml ファイルがすでに生成されています。 詳細については、「WSDL ファイルに基づき部分的な実装を生成する」を参照してください。

  5. Web サービスで非組み込みデータ型が使用されている場合は、シリアライゼーション クラスなどの必要なコンポーネントをすべて作成します。それらのコンポーネントは、autotype Ant タスクで自動的に生成されます (「autotype Ant タスクを実行する」を参照)。
  6. 必要であれば、clientgen Ant タスクを使用してクライアント JAR ファイルを作成します。
  7. clientgen Ant タスクを実行する」を参照してください。

  8. wspackage Ant タスクを使用して、すべてのコンポーネントをデプロイ可能な EAR ファイルにパッケージ化します (「wspackage Ant タスクを実行する」を参照)。

XML スキーマを使用して Web サービスをアセンブルする

次の手順では、Web サービスの非組み込みデータ型を表現する XML スキーマをベースとし、個別用途の Ant タスクを使用してそれらのデータ型の対応 Java 表現を生成することを前提としています。生成されたそれらの Java クラスを使用して、Web サービスを実装するバックエンド コンポーネントを記述し、次に Ant タスクを使用して残りのコンポーネント (web-services.xml ファイルなど) を生成します。元の XML スキーマは開発プロセスにわたって保持しておき、Web サービスをデプロイするときに、公開する WSDL に元の XML スキーマが含まれるようにします。

  1. autotype Ant タスクを実行して、XML スキーマ ファイルの非組み込みデータ型の Java 表現を生成します。また、この Ant タスクでは、XML と Java 間でデータを変換するためのシリアライゼーション クラスとデータ型マッピング ファイルを生成します。autotype Ant タスクの schemaFile 属性を使用して、XML スキーマを含むファイルの名前を指定します。
  2. 詳細については、「autotype Ant タスクを実行する」を参照してください。

  3. Web サービスを実装するステートレス セッション EJB または Java クラス バックエンド コンポーネントの Java コードを記述します。前の手順で autotype Ant タスクによって生成され、メソッドのパラメータまたは戻り値として使用される非組み込みデータ型の Java クラスを使用します。
  4. 詳細については、「コンポーネントの Java コードの記述」を参照してください。

  5. 必要な場合、autotype Ant タスクを EJB または Java クラスに対して実行して、作成したが元の XML スキーマファイルに含まれない新しいデータ型の非組み込みデータ型コンポーネントを生成します。autotype Ant タスクの javaComponents 属性を使用して、手順 2 で記述したバックエンド コンポーネントを指定します。
  6. また、typeMappingFile 属性を使用して、手順 1 で autotype Ant タスクを最初に実行して生成した既存のデータ型マッピング ファイルを指定します。autotype Ant タスクでは既存の XML スキーマと生成したスキーマが結合されるので、元の XML スキーマが保持されます。

    詳細については、「autotype Ant タスクを実行する」を参照してください。

  7. source2wsdd Ant タスクを実行して、web-services.xml デプロイメント記述子を生成します。autotype Ant タスクを実行して結合されたデータ型マッピング ファイルを作成する場合、typesInfo 属性でこの最終的なファイルを指定する必要があります。
  8. 詳細については、「source2wsdd Ant タスクを実行する」を参照してください。

  9. 必要であれば、clientgen Ant タスクを使用してクライアント JAR ファイルを作成します。
  10. 詳細については、「clientgen Ant タスクを実行する」を参照してください。

  11. wspackage Ant タスクを使用して、すべてのコンポーネントをデプロイ可能な EAR ファイルにパッケージ化します。
  12. 最初に使用した元の XML スキーマ ファイルで 1 つまたは複数の <include> 要素を使用して追加の XML スキーマ ファイルが指定されている場合は、これらのファイルを Web サービス Web アプリケーション WAR ファイル (デフォルト名 : web-services.war、デフォルトの場所 : EAR ファイルのルート ディレクトリ) のルート ディレクトリに明示的にコピーする必要があります。

    wspackage Ant タスクのさまざまな使い方の詳細と例については、「wspackage Ant タスクを実行する」を参照してください。

source2wsdd Ant タスクを実行する

source2wsdd Ant タスクを使用すると、Web サービスを実装するステートレス セッション EJB または Java ソース ファイルから web-services.xml デプロイメント記述子ファイルを生成できます。

source2wsdd Ant タスクを実行するには、次の手順に従います。

  1. 環境を設定します。
  2. Windows NT では、ドメイン ディレクトリにある setEnv.cmd コマンドを実行します。WebLogic Server ドメインのデフォルトの位置は、BEA_HOME\user_projects\domains\domainName です。BEA_HOME は BEA Products の最上位のインストール ディレクトリで、domainName はドメインの名前です。

    UNIX では、ドメイン ディレクトリにある setEnv.sh コマンドを実行します。WebLogic Server ドメインのデフォルトの位置は、BEA_HOME/user_projects/domains/domainName です。BEA_HOME は BEA Products の最上位のインストール ディレクトリで、domainName はドメインの名前です。

  3. source2wsdd Ant タスクの呼び出しの入った build.xml というファイルを作成します。 詳細については、この節で以下に説明する例を参照してください。
  4. build.xml ファイルと同じディレクトリで ant と入力し、Ant タスクまたは build.xml ファイルで指定されたタスクを実行します。
  5. prompt> ant

source2wsdd Ant タスクのリファレンス情報については、「source2wsdd」を参照してください。

以下に、簡単な build.xml ファイルの例を示します。

コード リスト 6-1 Java ソース ファイルの単純な Source2wsdd build.xml ファイル

<project name="buildWebservice" default="generate-typeinfo">
<target name="generate-typeinfot">
<source2wsdd
javaSource="source/MyService.java"
typesInfo="autotype/types.xml"
ddFile="ddfiles/web-services.xml"
serviceURI="/MyService" />
</project>

上の build.xml ファイルを使用して source2wsdd Ant タスクを実行すると、source/MyService.java という Java ソース ファイルから web-services.xml ファイルが生成されます。非組み込みデータ型の情報は、autotype/types.xml ファイルから利用します。この情報には、Web サービスのパラメータまたは戻り値として使用される非組み込みデータ型の XML スキーマ表現や、シリアライゼーション クラスの位置を指定するデータ型マッピング情報などが含まれます。通常、この types.xml ファイルは autotype Ant タスクを使用して生成します。

source2wsdd Ant タスクは、生成されたデプロイメント記述子情報をファイル ddfiles/web-services.xml に出力します。Web サービスの URI は /MyService で、これはデプロイされたこの Web サービスを呼び出す完全 URL で使用します。

次の例では、web-services.xml ファイルと、ステートレス セッション EJB で実装される Web サービスを記述する WSDL ファイル (wsdFiles/Temperature.wsdl) の両方を生成する方法を示します。ejbLink 属性が指定されているため、javaSource 属性は EJB ソース ファイルを指す必要があります。source2wsdd Ant タスクは、ejbLink 属性の値を web-services.xml ファイルの <stateless-ejb> 要素の <ejb-link> 子要素の値として使用します。

コード リスト 6-2 EJB の Source2wsdd build.xml ファイル

<source2wsdd 
javaSource="source/TemperatureService.java"
ejbLink="TemperatureService.jar#TemperatureServiceEJB"
ddFile="ddfiles/web-services.xml"
typesInfo="autotype/types.xml"
serviceURI="/TemperatureService"
wsdlFile="wsdlFiles/Temperature.wsdl"
/>

autotype Ant タスクを実行する

autotype Ant タスクを使用すると、シリアライゼーション クラスなどの非組み込みデータ型コンポーネントを生成できます。サポートされている非組み込みデータ型のリストは、「servicegen および autotype Ant タスクでサポートされる非組み込みデータ型」を参照してください。

autotype Ant タスクを使用するには、次の手順に従います。

  1. 環境を設定します。
  2. Windows NT では、ドメイン ディレクトリにある setEnv.cmd コマンドを実行します。WebLogic Server ドメインのデフォルトの位置は、BEA_HOME\user_projects\domains\domainName です。BEA_HOME は BEA Products の最上位のインストール ディレクトリで、domainName はドメインの名前です。

    UNIX では、ドメイン ディレクトリにある setEnv.sh コマンドを実行します。 WebLogic Server ドメインのデフォルトの位置は、BEA_HOME/user_projects/domains/domainName です。BEA_HOME は BEA Products の最上位のインストール ディレクトリで、domainName はドメインの名前です。

  3. autotype Ant タスクの呼び出しの入った build.xml というファイルを作成します。 詳細については、この節で以下に説明する例を参照してください。
  4. build.xml ファイルと同じディレクトリで ant と入力し、Ant タスクまたは build.xml ファイルで指定されたタスクを実行します。
  5. prompt> ant

autotype Ant タスクのリファレンス情報については、「autotype」を参照してください。

以下に、簡単な build.xml ファイルの例を示します。

コード リスト 6-3 Java クラスの Autotype build.xml ファイル

<project name="buildWebservice" default="generate-typeinfo">
<target name="generate-typeinfot">
<autotype javatypes="mypackage.MyType"
targetNamespace="http://www.foobar.com/autotyper"
packageName="a.package.name"
destDir="output" />
</target>
</project>

上の build.xml ファイルを使用して autotype Ant タスクを実行すると、mypackage.MyType という Java クラスの非組み込みデータ型コンポーネントが生成されます。 生成されるシリアライゼーション クラスでは、a.package.name というパッケージ名が使用されます。生成されたシリアライゼーション Java クラスと XML スキーマ情報は、output ディレクトリに配置されます。生成された XML スキーマおよび型マッピング情報は、この output ディレクトリの types.xml というファイルに格納されます。

次の build.xml ファイルのサンプルからの抜粋は、autotype タスクのもう 1 つの使用法を示しています。

コード リスト 6-4 WSDL で始めるための Autotype build.xml ファイル

<autotype  wsdl="file:/wsdls/myWSDL"
targetNamespace="http://www.foobar.com/autotyper"
packageName="a.package.name"
destDir="output" />

この例は最初の例と似ていますが、データ型の Java 表現ではなく、Web サービスの WSDL に埋め込まれた XML スキーマ表現で始まっています。この場合、タスクは対応する Java 表現を生成します。

同じように、XML スキーマ ファイルをベースとして、対応する Java コンポーネントを生成する場合、次の例のように schemaFile 属性を使用します。

コード リスト 6-5 XML スキーマで始めるための Autotype build.xml ファイル

<autotype  schemaFile="file:/schemas/mySchema.xsd"
targetNamespace="http://www.foobar.com/autotyper"
packageName="a.package.name"
destDir="output" />

上の例では、mySchema.xsd ファイルの XML スキーマが、データ型マッピング情報を含んだ output/types.xml ファイルにそのままコピーされます。

次の例は、新しく実装された Java データ型の非組み込みデータ型コンポーネントを作成する方法と、生成済みのコンポーネントを保持する方法を示しています。

コード リスト 6-6 既存のコンポーネントを保持する Autotype build.xml ファイル

<autotype  javaComponents="my.superService"
typeMappingFile="file:/mapfiles/types.xml"
targetNamespace="http://www.foobar.com/autotyper"
packageName="a.package.name"
destDir="output" />

上の例では、すでに autotype Ant タスクを XML スキーマ ファイルに対して実行し、対応する Java データ型とデータ型マッピング ファイルを生成してあることを前提としています。また、これらのデータ型を使用してステートレス セッション EJB バックエンド コンポーネントを実装し、そのプロセスの間、別の Java データ型を作成し、autotype Ant タスクを使用して対応する XML スキーマを生成するものとします。ただし、最初の XML スキーマを保持し、新しく生成される types.xml ファイルにコピーします。この例では、javaComponents 属性を使用して、新しい Java データ型を持つ EJB を指定し、typeMappingFile 属性を使用して、登録しないデータ型の XML スキーマを含む既存のファイルを指定します。Ant タスクでは、file:/mapfiles/types.xml ファイルの既存のデータ型マッピング情報が生成された情報と結合され、結果が output/types.xml ファイルに書き込まれます。

clientgen Ant タスクを実行する

clientgen Ant タスクを実行し、クライアント JAR ファイルを自動的に生成するには、次のように行います。

  1. 環境を設定します。
  2. Windows NT では、ドメイン ディレクトリにある setEnv.cmd コマンドを実行します。WebLogic Server ドメインのデフォルトの位置は、BEA_HOME\user_projects\domains\domainName です。BEA_HOME は BEA Products の最上位のインストール ディレクトリで、domainName はドメインの名前です。

    UNIX では、ドメイン ディレクトリにある setEnv.sh コマンドを実行します。WebLogic Server ドメインのデフォルトの位置は、BEA_HOME/user_projects/domains/domainName です。BEA_HOME は BEA Products の最上位のインストール ディレクトリで、domainName はドメインの名前です。

  3. clientgen Ant タスクの呼び出しの入った build.xml というファイルを作成します。詳細については、この節で以下に説明する例を参照してください。
  4. build.xml ファイルと同じディレクトリで ant と入力し、Ant タスクまたは build.xml ファイルで指定されたタスクを実行します。
  5. prompt> ant

clientgen Ant タスクのリファレンス情報については、「clientgen」を参照してください。

以下に、簡単な build.xml ファイルの例を示します。

コード リスト 6-7 EAR ファイルからクライアントを生成するための Clientgen build.xml ファイル

<project name="buildWebservice" default="generate-client">
<target name="generate-client">
<clientgen ear="myapps/myapp.ear"
serviceName="myService"
packageName="myapp.myservice.client"
useServerTypes="True"
clientJar="myapps/myService_client.jar" />
</target>
</project>

build.xml ファイルを使用して clientgen Ant タスクを実行すると、myapps/myService_client.jar クライアント JAR ファイルが作成されます。この JAR ファイルには、myapps/myapp.ear EAR ファイルに含まれる myService という WebLogic Web サービスの呼び出しに使用する、サービス固有のクライアント インタフェースとスタブ、およびシリアライゼーション クラスが含まれます。クライアント インタフェースとスタブ ファイルは、myapp.myservice.client にパッケージ化されます。useServerTypes 属性は、clientgen Ant タスクが、この Web サービスで使用される非組み込みデータ型を実装する Java コードを生成するのではなく、それらすべてのデータ型の Java 実装を myapps/myapp.ear ファイルから取得するように指定します。

次の build.xml ファイルのサンプルからの抜粋は、clientgen タスクのもう 1 つの使用法を示しています。

コード リスト 6-8 WSDL ファイルからクライアントを生成するための Clientgen build.xml ファイル

<clientgen wsdl="http://example.com/myapp/myservice.wsdl"
packageName="myapp.myservice.client"
clientJar="myapps/myService_client.jar"
/>

この例では、clientgen タスクは、http://example.com/myapp/myservice.wsdl WSDL ファイルで記述されている Web サービスを呼び出すクライアント JAR ファイル (myapps/myService_client.jar) を作成します。インタフェースとスタブ ファイルは myapp.myservice.client にパッケージ化されます。

wspackage Ant タスクを実行する

wspackage Ant タスクを使用すると、Web サービスのさまざまなコンポーネントをデプロイ可能な新しい EAR ファイルにパッケージ化したり、既存の EAR ファイルに追加したりできます。

wspackage Ant タスクを実行するには、次の手順に従います。

  1. 環境を設定します。
  2. Windows NT では、ドメイン ディレクトリにある setEnv.cmd コマンドを実行します。WebLogic Server ドメインのデフォルトの位置は、BEA_HOME\user_projects\domains\domainName です。BEA_HOME は BEA Products の最上位のインストール ディレクトリで、domainName はドメインの名前です。

    UNIX では、ドメイン ディレクトリにある setEnv.sh コマンドを実行します。WebLogic Server ドメインのデフォルトの位置は、BEA_HOME/user_projects/domains/domainName です。BEA_HOME は BEA Products の最上位のインストール ディレクトリで、domainName はドメインの名前です。

  3. wspackage Ant タスクの呼び出しの入った build.xml というファイルを作成します。詳細については、この節で以下に説明する例を参照してください。
  4. build.xml ファイルと同じディレクトリで ant と入力し、Ant タスクまたは build.xml ファイルで指定されたタスクを実行します。
  5. prompt> ant

wspackage Ant タスクのリファレンス情報については、「wspackage」を参照してください。

次の例は、Java クラスを使用して実装される Web サービスのデプロイ可能な EAR ファイルを作成するための単純な build.xml ファイルです。

コード リスト 6-9 Java クラスの Wspackage build.xml ファイル

<project name="buildWebservice" default="package-up">
<target name="package-up">
<wspackage
output="ears/myWebService.ear"
contextURI="web_services"
codecDir="autotype"
webAppClasses="example.ws2j.service.SimpleTest"
ddFile="ddfiles/web-services.xml" />
</project>

build.xml ファイルを使用して wspackage Ant タスクを実行すると、ears/myWebService.ear という EAR ファイルが作成されます。Web サービスのコンテキスト URI は web_services で、これはその Web サービスを呼び出す完全 URL で使用されます。非組み込みデータ型のシリアライゼーション クラスを含むクラス ファイルは、autotype ディレクトリに配置されます。Web サービスを実装する Java クラスは example.ws2j.service.SimpleTest という名前で、Web アプリケーションの WEB-INF/classes ディレクトリにパッケージ化されます。既存のデプロイメント記述子ファイルは ddfiles/web-services.xml です。

次の例は、既存の EAR ファイルにコンポーネントを追加する build.xml ファイルです。

コード リスト 6-10 EAR ファイルにコンポーネントを追加するための Wspackage build.xml ファイル

<project name="buildWebservice" default="package-up">
<target name="package-up">
<wspackage
output="ears/myWebService.ear"
overwrite="false"
filesToEar="myEJB2.jar"
/>
</project>

例の中の wspackage Ant タスクでは、ファイル myEJB2.jar が、ears/myWebService.ear という既存の EAR ファイルのルート ディレクトリに追加されます。overwrite 属性に false を設定することで、ears/myWebService.ear ファイルにある既存のコンポーネントがいっさい上書きされないように指定しています。wspackage Ant タスクを使用して EAR ファイルに別のファイルを追加するときは、必ずこのように設定してください。

次の例は既存の EAR にコンポーネントを追加する上記の例と似ていますが、この場合は XML スキーマ ファイルを既存の WAR ファイルのルート ディレクトリに追加します。最初に autotype Ant タスクを使用して XML スキーマから非組み込みデータ型コンポーネントを生成した場合に、そのスキーマ ファイルで 1 つまたは複数の <include> 要素を使用して追加の XML スキーマ ファイルが指定されているときには、次の構文を使用する必要があります。最終的な Web サービスをアーカイブにパッケージ化するときに、元の XML スキーマ ファイルとそれに含まれる XML スキーマ ファイルを手動で WAR ファイルに追加してください。

コード リスト 6-11 EAR の WAR ファイルにスキーマ ファイルを追加するための Wspackage build.xml ファイル

<project name="buildWebservice" default="package-up">
<target name="package-up">
<wspackage
output="ears/myWebService.ear"
overwrite="false"
warName="myservice.war"
filesToWar="original_schema.xsd,included_schema.xsd"
/>
</project>

例の中の wspackage Ant タスクでは、XML スキーマ ファイル original_schema.xsdincluded_schema.xsd が、myservice.war という既存の WAR ファイルのルート ディレクトリに追加されます (myservice.war は ears/myWebService.ear という EAR ファイルのルート ディレクトリにあります)。

 


Web サービス EAR ファイル パッケージ

Web サービスは、Web アプリケーションの WAR ファイルと EJB JAR ファイルが入っているエンタープライズ アプリケーションの標準の EAR ファイルにパッケージ化されています。

次の図は、典型的な WebLogic Web サービス EAR ファイル階層を示しています。

図 6-1 WebLogic Web サービスの EAR ファイルの階層

WebLogic Web サービスの EAR ファイルの階層


 

 


servicegen および autotype Ant タスクでサポートされる非組み込みデータ型

以降の節の表は、servicegen および autotype Ant タスクでデータ型コンポーネント (シリアライゼーション クラス、Java または XML 表現など) を生成できる非組み込み XML および Java データ型を示しています。

以降の表で示されておらず、「サポートされる組み込みデータ型」の組み込みデータ型でもない XML または Java データ型については、非組み込みデータ型コンポーネントを手動で作成する必要があります。詳細については、「非組み込みデータ型の使い方」を参照してください。

警告 :autotypeservicegen、および clientgen Ant タスクによって生成されたシリアライゼーション クラスと Java および XML 表現はラウンドトリップできません。詳細については、「生成されたデータ型コンポーネントの非ラウンドトリップ」を参照してください。

WebLogic Web サービスがデータ型の点で JAX-RPC 仕様と準拠しなくなる状況については、「JAX-RPC に準拠しないデータ型」を参照してください。

サポートされている XML 非組み込みデータ型

次の表は、サポートされている XML スキーマ非組み込みデータ型を示しています。XML データ型が表にある場合は、servicegen および autotype Ant タスクを使用して、XML 表現と Java 表現の間でデータを変換するシリアライゼーション クラスや、web-services.xml デプロイメント記述子の Java 表現および型マッピング情報を生成できます。

データ型の詳細や例については、JAX-RPC 仕様を参照してください。

表 6-1 サポートされている非組み込み XML スキーマ データ型

XML スキーマ データ型

同等の Java データ型またはマッピング メカニズム

列挙

型保障列挙パターン。詳細は、JAX-RPC 仕様のセクション 4.2.4 を参照。

単純型および複合型の両方の要素を持つ <xsd:complexType>

JavaBeans。

単純なコンテンツを含む <xsd:complexType>

JavaBeans。

<xsd:complexType><xsd:attribute>

JavaBeans のプロパティ。

既存の単純型の制限による新しい単純型の派生

同等の単純型の Java データ型。

制限要素で使用されるファセット

注意 :基底のプリミティブ型は stringdecimalfloat、または double のいずれかである必要がある。 パターン ファセットは任意。

シリアライゼーションおよびデシリアライゼーションで強制される制限。

<xsd:list>

リスト データ型の配列。

wsdl:arrayType 属性を使用した制限によって soapenc:Array から派生する配列

arrayType データ型と同等の Java データ型の配列。

制限によって soapenc:Array から派生する配列

同等の Java データ型の配列。

単純型からの複合型の派生

String 型の simpleContent というプロパティを持つ JavaBeans。

<xsd:anyType>

java.lang.Object。

<xsd:nil> および <xsd:nillable> 属性

Java の null 値。

XML データ型が組み込みデータ型で通常は Java プリミティブ データ型 (intshort など) にマップされる場合、その XML データ型は実際には同等のオブジェクト ラッパー型 (java.lang.Integerjava.lang.Short など) にマップされる。

拡張による複合型の派生

Java の継承を使用してマップされる。

抽象型

抽象 Java データ型。

サポートされている Java 非組み込みデータ型

次の表は、サポートされている Java 非組み込みデータ型を示しています。Java データ型がこの表にある場合、servicegen および autotype Ant タスクは Java 表現と XML 表現の間でデータを変換するシリアライゼーション クラスを生成できます。

表 6-2 サポートされている非組み込み Java データ型

Java データ型

同等の XML スキーマ データ型

サポートされている任意のデータ型の配列

SOAP 配列

サポートされている任意のデータ型をプロパティとする JavaBean

<xsd:sequence>

java.util.List

SOAP 配列

java.util.ArrayList

SOAP 配列

java.util.LinkedList

SOAP 配列

java.util.Vector

SOAP 配列

java.util.Stack

SOAP 配列

java.util.Collection

SOAP 配列

java.util.Set

SOAP 配列

java.util.HashSet

SOAP 配列

java.util.SortedSet

SOAP 配列

java.util.TreeSet

SOAP 配列

java.lang.Object

注意 :実行時オブジェクトのデータ型は既知の型 (組み込みデータ型または型マッピング情報のあるデータ型のいずれか) である必要がある。

<xsd:anyType>

JAX-RPC スタイルの列挙値クラス

列挙ファセットを持つ <xsd:simpleType>

JAX-RPC に準拠しないデータ型

autotype Ant タスクは、XML スキーマのデータ型 (Java 表現を生成する対象) が以下の特性すべてを備えている場合は JAX-RPC 仕様に準拠しません。

次の例は、そのような XML スキーマ データ型を示しています。

<xsd:complexType name="Response">
<xsd:sequence >
<xsd:element name="code" type="xsd:string" maxOccurs="10" />
</xsd:sequence>
</xsd:complexType>

autotype Ant タスクは、この種の XML スキーマ データ型を、指定された要素の Java 配列に直接マップします。前の例で、autotype Ant タスクは Response XML スキーマ データ型を java.lang.String[] Java 型にマップします。これは、.NET で行われるマッピングに似ています。

JAX-RPC 仕様では、この種の XML スキーマ データ型は JavaBean クラスにセッター メソッドとゲッター メソッドのペアがある Java 配列にマップされるべきとされています。WebLogic Web サービスは、JAX-RPC 仕様のこの最後の部分に従いません。

 


生成されたデータ型コンポーネントの非ラウンドトリップ

servicegen または autotype Ant タスクを使用して非組み込みデータ型のシリアライゼーション クラスおよび Java または XML 表現を作成する場合、このプロセスはラウンドトリップできないことに注意する必要があります。たとえば、autotype Ant タスクを使用して XML スキーマ データ型の Java 表現を生成し、次に、生成された Java 型から autotype を使用して XML スキーマ データ型を作成した場合、元の XML スキーマ データ型と生成された XML スキーマ データ型は、どちらも同じ XML データを記述しているにもかかわらず同じになるとは限りません。同様に、Java 型から XML スキーマを生成し、次に、生成されたその XML スキーマから新しい Java データ型を生成した場合も、元の Java 型と新しい Java 型が同じになるとは限りません。たとえば、元の Java 型と生成された Java 型では、コンストラクタのパラメータの列挙順序が異なる場合があります。

こうした動作は、さまざまな処理に影響を与えます。たとえば、非組み込みデータ型を使用する既存のステートレス セッション EJB から Web サービスを開発するとします。この場合、autotype Ant タスクを使用して非組み込みデータ型のシリアライゼーション クラスと Java および XML 表現を生成し、生成されたコードを、Web サービスを実装するサーバサイド コードで使用します。次に、clientgen Ant タスクを使用して Web サービス固有のクライアント JAR ファイルを生成します。このファイルにも非組み込みデータ型のシリアライゼーション クラスと Java 表現が組み込まれています。 しかし、デフォルトによって clientgen はこれらのコンポーネントを Web サービスの WSDL (したがって XML スキーマ) から生成するので、clientgen によって生成されるクライアントサイド Java 表現は autotype によって生成されるサーバサイド Java コードと同じにならない場合があります。このため、クライアント アプリケーションではデータ型を処理するサーバサイド コードを再利用できない場合があります。 clientgen Ant タスクが WebLogic Web サービス EAR ファイル内の生成されたシリアライゼーション クラスとコードを常に使用するようにするには、useServerTypes 属性を指定します。

 


WebLogic Web サービスのデプロイとテスト

WebLogic Web サービスをデプロイすることで、リモート クライアントで使用できるようにします。WebLogic Web サービスは標準 J2EE エンタープライズ アプリケーションとしてパッケージ化されているため、Web サービスのデプロイはエンタープライズ アプリケーションのデプロイと同じです。

エンタープライズ アプリケーションのデプロイの詳細については、『WebLogic Server アプリケーションのデプロイメント』を参照してください。

Web サービスのテストは、WebLogic Web サービス ホーム ページを使用して実行できます。次の「WebLogic Web サービスのホーム ページおよび WSDL の URL」では、その手順を説明します。

WebLogic Web サービスのホーム ページおよび WSDL の URL

WebLogic Server にデプロイされているすべての Web サービスには、ホーム ページがあります。ホーム ページからは、以下の操作ができます。

注意 :ホーム ページから Web サービスをテストするときには、双方向 SSL を使用できません。

以下の URL では、まず、Web サービスのホーム ページを呼び出す方法を示し、次に WSDL を表示します。

[protocol]://[host]:[port]/[contextURI]/[serviceURI]
[protocol]://[host]:[port]/[contextURI]/[serviceURI]?WSDL

各要素の説明は次のとおりです。

たとえば、次の build.xml ファイルを使用して、servicegen Ant タスクで WebLogic Web サービスをアセンブルしたとします。

<project name="buildWebservice" default="build-ear">
<target name="build-ear">
<servicegen
destEar="myWebService.ear"
warName="myWAR.war"
contextURI="web_services">
<service
ejbJar="myEJB.jar"
targetNamespace="http://www.bea.com/examples/Trader"
serviceName="TraderService"
serviceURI="/TraderService"
generateTypes="True"
expandMethods="True" >
</service>
</servicegen>
</target>
</project>

Web サービスが ariel というホストのデフォルトのポート番号で実行されているとすると、その Web サービスのホーム ページを呼び出す URL は次のとおりです。

http://ariel:7001/web_services/TraderService

この Web サービスの自動生成による WSDL を取得する URL は次のとおりです。

http://ariel:7001/web_services/TraderService?WSDL

WebLogic Web サービスの WSDL とホームページへのアクセスの拒否

WSDL には Web サービスの公式な規約が定義されるため、容易に利用できるようにすることが一般的です。デフォルトでは、WebLogic Web サービスを記述する WSDL は常に外部からアクセス可能です。また、WSDL には Web サービスのホーム ページからもアクセスできます。

しかし、WSDL へのパブリックなアクセスを無効にする必要がある場合もあります。パブリックなアクセスを無効にするには、WebLogic Web サービスを記述する web-services.xml デプロイメント記述子ファイルで、対象の <web-service> 要素を更新して、次に示すように属性 exposeWSDL="False" または exposeHomePage="False" を追加します。

<web-service targetNamespace="http://example.com"
name="myorderproc"
uri="myOrderProcessingService"
exposeWSDL="False"
exposeHomePage="False">
...
</web-service>

デプロイメント記述子の更新後に変更を有効にするには、Web サービスを再デプロイする必要があります。

 

フッタのナビゲーションのスキップ  ページの先頭 前 次