BEA ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > WebLogic Server > WebLogic Web サービス プログラマーズ ガイド > Ant タスクを使用した WebLogic Web サービスのアセンブル |
WebLogic Web サービス プログラマーズ ガイド
|
Ant タスクを使用した WebLogic Web サービスのアセンブル
この章では、さまざまな Ant タスクを使用して WebLogic Web サービスをアセンブルおよびデプロイする方法を説明します。
Ant タスクを使用した WebLogic Web サービスのアセンブルの概要
WebLogic Web サービスのアセンブルとは、サービスのすべてのコンポーネント (EJB JAR ファイル、SOAP メッセージ ハンドラ クラスなど) の収集、web-services.xml デプロイメント記述子ファイルの生成、および WebLogic Server にデプロイできるエンタープライズ アプリケーション アーカイブ(EAR)ファイルへのそれらすべてのパッケージ化を指します。
Ant タスクを使用した WebLogic Web サービスのアセンブルには次の 2 通りの方法があります。
servicegen Ant タスクは、入力として EJB JAR ファイル (EJB 実装の Web サービスの場合) または Java クラスのリスト (Java クラス実装の Web サービスの場合) を受け取り、Java コードおよび Ant タスクの属性の参照後の情報に基づいて、WebLogic Web サービスを構成するすべてのコンポーネントを自動的に生成し、それらを EAR ファイルにパッケージ化します。
詳細については、servicegen Ant タスクを使用した WebLogic Web サービスのアセンブルを参照してください。
servicegen Ant タスクは、ほとんどの WebLogic Web サービスのアセンブルで適切に使用できます。ただし、Web サービスをどのようにアセンブルするかもっと細かくコントロールする場合は、個別用途の Ant タスクを使用できます。たとえば、source2wsdd で web-services.xml ファイルを生成し、情報を追加する必要がある場合にこのファイルを手動で更新できます。
詳細については、他の Ant タスクを使用した WebLogic Web サービスのアセンブルを参照してください。
Web サービスおよび Ant タスクの詳細なリファレンス情報は、Web サービス Ant タスクとコマンドライン ユーティリティ.を参照してください。
注意: WebLogic Server に付属の Java Ant ユーティリティでは、ANTCLASSPATH 変数を設定した際の WL_HOME\server\bin ディレクトリにある ant (UNIX) または ant.bat (Windows) コンフィグレーション ファイルを使用します。WL_HOME は、インストールした WebLogic Platform の最上位ディレクトリです。ANTCLASSPATH 変数を更新する必要がある場合は、使用しているオペレーティング システムの適切なファイルを変更してください。
servicegen Ant タスクを使用した WebLogic Web サービスのアセンブル
servicegen Ant タスクは、入力として EJB JAR ファイルまたは Java クラスのリストを受け取り、すべての必要な Web サービス コンポーネントを作成して、それらをデプロイ可能な EAR ファイルにパッケージ化します。
具体的には、servicegen Ant タスクは、次のタスクを実行します。
WebLogic Web サービスの自動アセンブル :主な手順
servicegen Ant タスクを使用して Web サービスを自動的にアセンブルするには次を行います。
詳細は、『WebLogic Server アプリケーションの開発』を参照してください。
servicegen Ant タスクを指定する方法の詳細については、servicegen Ant タスクを実行するを参照してください。
Ant ビルド ファイルの一般的な情報については、http://jakarta.apache.org/ant/manual/ を参照してください。
prompt 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 タスクは、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" を指定します。
他の Ant タスクを使用した WebLogic Web サービスのアセンブル
servicegen Ant タスクは、ほとんどの WebLogic Web サービスのアセンブルで適切に使用できます。ただし、Web サービスをどのようにアセンブルするかもっと細かくコントロールする場合は、個別用途の Ant タスクを使用できます。たとえば、source2wsdd で web-services.xml ファイルを生成し、情報を追加する必要がある場合にこのファイルを手動で更新できます。
servicegen 以外の Ant タスクで WebLogic Web サービスをアセンブルするには、次の手順を行います。
詳細は、「WebLogic Server アプリケーションのパッケージ化」を参照してください。
Java クラスを使用して Web サービスを実装している場合は、source2wsdd Ant タスクを使用して web-services.xml ファイルを生成できます。詳細については、source2wsdd Ant タスクを実行するを参照してください。wsdl2Service Ant タスクを使用して既存の WSDL ファイルから Web サービスの部分的な実装を生成した場合は、その Ant タスクによって web-services.xml ファイルが既に生成されています。
EJB 実装の Web サービスなど、他のすべてのケースでは、web-services.xml ファイルを手作業で作成する必要があります。 web-services.xml ファイルの手動作成 : 主な手順を参照してください。
clientgen Ant タスクを実行するを参照してください。
source2wsdd Ant タスクを使用すると、Web サービスを実装する Java ソース ファイルから web-services.xml デプロイメント記述子ファイルを生成できます。
注意: この Ant タスクでは、EJB 実装の Web サービスの web-services.xml ファイルは生成できません。この Ant タスクは、Java クラス実装の Web サービスでのみ使用できます。
source2wsdd Ant タスクを実行するには、次の手順に従います。
prompt> ant
source2wsdd Ant タスクのリファレンス情報については、source2wsddを参照してください。
source2wsdd Ant タスクのサンプル build.xml ファイル
<project name="buildWebservice" default="generate-typeinfo">
<target name="generate-typeinfot">
<source2wsdd
javaSource="c:¥source¥MyService.java"
typesInfo="c:¥autotype¥types.xml"
ddFile="c:¥ddfiles¥web-services.xml"
serviceURI="/MyService" />
</project>
例の中の source2wsdd Ant タスクでは、c:¥source¥MyService.java という Java ソース ファイルから web-services.xml ファイルが生成されます。非組み込みデータ型の情報は、c:¥autotype¥types.xml ファイルから利用します。この情報には、Web サービスのパラメータまたは戻り値として使用される非組み込みデータ型の XML スキーマ表現や、シリアライゼーション クラスの位置を指定するデータ型マッピング情報などが含まれます。このファイルは、通常は autotype Ant タスクを使用して生成します。
source2wsdd Ant タスクは、生成されたデプロイメント記述子情報をファイル c:¥ddfiles¥web-services.xml に出力します。Web サービスの URI は /MyService で、これはデプロイされたこの Web サービスを呼び出す完全 URL で使用します。
autotype Ant タスクを使用すると、シリアライゼーション クラスなどの非組み込みデータ型コンポーネントを生成できます。サポートされている非組み込みデータ型のリストは、servicegen および autotype Ant タスクでサポートされる非組み込みデータ型を参照してください。
autotype Ant タスクを実行するには、次の手順に従います。
prompt> ant
autotype Ant タスクのリファレンス情報については、autotypeを参照してください。
Autotype Ant タスクのサンプル 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="d:¥output" />
</target>
</project>
例の中の autotype Ant タスクでは、mypackage.MyType という Java クラスの非組み込みデータ型コンポーネントが作成されます。生成されるシリアライゼーション クラスでは、a.package.name というパッケージ名が使用されます。生成されたシリアライゼーション Java クラスと XML スキーマ情報は、d:¥output ディレクトリに配置されます。生成された XML スキーマおよび型マッピング情報は、この output ディレクトリの types.xml というファイルに格納されます。
次の build.xml ファイルのサンプルからの抜粋は、autotype タスクのもう一つの使用法を示しています。
<autotype wsdl="file:¥wsdls¥myWSDL"
targetNamespace="http://www.foobar.com/autotyper"
packageName="a.package.name"
destDir="d:¥output" />
この例は最初の例と似ていますが、データ型の Java 表現ではなく、Web サービスの WSDL に埋め込まれた XML スキーマ表現で始まっています。この場合、タスクは対応する Java 表現を生成します。
clientgen Ant タスクを実行し、クライアント JAR ファイルを自動的に生成するには次を行います。
prompt> ant
clientgen Ant タスクのリファレンス情報については、clientgenを参照してください。
clientgen Ant タスクのサンプル build.xml ファイル
<project name="buildWebservice" default="generate-client">
<target name="generate-client">
<clientgen ear="c:/myapps/myapp.ear"
serviceName="myService"
packageName="myapp.myservice.client"
useServerTypes="True"
clientJar="c:/myapps/myService_client.jar" />
</target>
</project>
この例では、clientgen Ant タスクは c:/myapps/myService_client.jar クライアント JAR ファイルを作成します。この JAR ファイルには、c:/myapps/myapp.ear EAR ファイルに含まれる myService という WebLogic Web サービスの呼び出しに使用する、サービス固有のクライアントインタフェースとスタブ、およびシリアライゼーション クラスが含まれます。クライアント インタフェースとスタブ ファイルは、myapp.myservice.client にパッケージ化されます。useServerTypes 属性は、clientgen Ant タスクが、この Web サービスで使用される非組み込みデータ型を実装する Java コードを生成するのではなく、それらすべてのデータ型の Java 実装を c:/myapps/myapp.ear ファイルから取得するように指定します。
wspackage Ant タスクを使用すると、Web サービスのさまざまなコンポーネントをデプロイ可能な EAR ファイルにパッケージ化できます。
wspackage Ant タスクを実行するには、次の手順に従います。
prompt> ant
wspackage Ant タスクのリファレンス情報については、wspackageを参照してください。
wspackage Ant タスクのサンプル build.xml ファイル
次の例は、Java クラスを使用して実装される Web サービスのデプロイ可能な EAR ファイルを作成するための単純な build.xml ファイルです。
<project name="buildWebservice" default="generate-typeinfo">
<target name="generate-typeinfot">
<wspackage
output="c:¥myWebService.ear"
contextURI="web_services"
codecDir="c:¥autotype"
webAppClasses="example.ws2j.service.SimpleTest"
ddFile="c:¥ddfiles¥web-services.xml" />
</project>
例の中の wspackage Ant タスクでは、c:¥myWebService.ear という EAR ファイルが作成されます。Web サービスのコンテキスト URI は web_services で、これはその Web サービスを呼び出す完全 URL で使用されます。非組み込みデータ型のシリアライザ クラスを含むシリアライザ クラスは、c:¥autotype ディレクトリに配置されます。Web サービスを実装する Java クラスは example.ws2j.service.SimpleTest という名前で、Web アプリケーションの WEB-INF/classes ディレクトリにパッケージ化されます。既存のデプロイメント記述子ファイルは c:¥ddfiles¥web-services.xml です。
Web サービスは、Web アプリケーションの WAR ファイルと EJB JAR ファイルが入っているエンタープライズ アプリケーションの標準の EAR ファイルにパッケージ化されています。
次の図は、典型的な WebLogic Web サービス EAR ファイル階層を示しています。
servicegen および autotype Ant タスクでサポートされる非組み込みデータ型
以降の節の表は、servicegen および autotype Ant タスクでデータ型コンポーネント (シリアライザ クラス、Java または XML 表現など) を生成できる非組み込み XML および Java データ型を示しています。
以降の表で示されていず、組み込みデータ型の使用法の組み込みデータ型でもない XML または Java データ型については、非組み込みデータ型コンポーネントを手動で作成する必要があります。詳細については、非組み込みデータ型の使用法を参照してください。
警告: autotype、servicegen、および clientgen Ant タスクによって生成されたシリアライザ クラスと Java および XML 表現はラウンドトリップできません。詳細については、生成されたデータ型コンポーネントの非ラウンドトリップを参照してください。
データ型に関して、WebLogic Web サービスが JAX-RPC 仕様にどのように準拠していないかについては、JAX-RPC へのデータ型の非準拠を参照してください。
次の表は、サポートされている XML スキーマ非組み込みデータ型を示しています。XML データ型が表にある場合は、servicegen および autotype Ant タスクを使用して、XML 表現と Java 表現の間でデータを変換するシリアライザ クラスや、web-services.xml デプロイメント記述子の Java 表現および型マッピング情報を生成できます。
データ型の詳細や例については、JAX-RPC 仕様を参照してください。
次の表は、サポートされている Java 非組み込みデータ型を示しています。Java データ型がこの表にある場合、servicegen および autotype Ant タスクは Java 表現と XML 表現の間でデータを変換するシリアライザ クラスを生成できます。
autotype Ant タスクは、(そのために Java 表現を生成している) XML スキーマのデータ型に、以下の特性がすべて備わっている場合、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 サービスは、仕様におけるこの最後の部分には、従っていません。
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 サービスは標準 J2EE エンタープライズ アプリケーションとしてパッケージ化されているため、Web サービスのデプロイはエンタープライズ アプリケーションのデプロイと同じです。
エンタープライズ アプリケーションのデプロイメントの詳細については、「WebLogic Server デプロイメント」を参照してください。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |