WebLogic Web サービス プログラマーズ ガイド
![]() |
![]() |
![]() |
![]() |
この章では、さまざまな Ant タスクを使用して WebLogic Web サービスをアセンブルおよびデプロイする方法を説明します。
WebLogic Web サービスのアセンブルとは、サービスのすべてのコンポーネント (EJB JAR ファイル、SOAP メッセージ ハンドラ クラスなど) の収集、web-services.xml
デプロイメント記述子ファイルの生成、および WebLogic Server にデプロイできるエンタープライズ アプリケーション アーカイブ (Enterprise Application Archive: EAR) ファイルへのそれらすべてのパッケージ化を指します。
Ant タスクを使用した WebLogic Web サービスのアセンブルには次の 2 通りの方法があります。
servicegen
Ant タスクの使用 servicegen
Ant タスクは、入力として EJB JAR ファイル (EJB 実装の Web サービスの場合) または Java クラスのリスト (Java クラス実装の Web サービスの場合) を受け取り、Java コードおよび Ant タスクの属性の参照後の情報に基づいて、WebLogic Web サービスを構成するすべてのコンポーネントを自動的に生成し、それらを EAR ファイルにパッケージ化します。
詳細については、「servicegen Ant タスクを使用した WebLogic Web サービスのアセンブル」を参照してください。
autotype
、source2wsdd
といったさまざまな個別用途の Ant タスクの使用 servicegen
Ant タスクは、ほとんどの WebLogic Web サービスのアセンブルで適切に使用できます。ただし、Web サービスをアセンブルする方法についてもっと細かくコントロールする場合は、個別用途の Ant タスクを使用できます。たとえば、source2wsdd
で web-services.xml
ファイルを生成し、情報を追加する必要がある場合にこのファイルを手動で更新できます。
詳細については、「個別用途の Ant タスクを使用した WebLogic Web サービスのアセンブル」を参照してください。
Web サービスおよび Ant タスクの詳細なリファレンス情報は、「Web サービス Ant タスクとコマンドライン ユーティリティ」を参照してください。
注意 :WebLogic Server の Java Ant ユーティリティでは WL_HOME
\server\bin
ディレクトリ (WL_HOME
は WebLogic Platform がインストールされている最上位ディレクトリ) にある ant
(UNIX) または ant.bat
(Windows) コンフィグレーション ファイルを使用して各種の Ant 固有変数を設定します。これらの Ant 変数を更新する必要がある場合、使用しているオペレーティング システム用のコンフィグレーション ファイルを変更します。
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 タスクは、EJB JAR ファイルまたは Java クラスのリストを入力として受け取り、必要なすべての Web サービス コンポーネントを作成して、デプロイ可能な EAR ファイルにパッケージ化します。
具体的には、servicegen
Ant タスクは、次のタスクを実行します。
servicegen
Ant タスクの属性と参照した EJB または Java クラスの情報に基づいて、web-services.xml
デプロイメント記述子ファイルを作成する。web-services.xml
ファイルを更新する。サポートされている非組み込みデータ型のリストは、「servicegen および autotype Ant タスクでサポートされる非組み込みデータ型」を参照してください。servicegen
Ant タスクを使用して Web サービスを自動的にアセンブルするには次を行います。
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
はドメインの名前です。
詳細については、『WebLogic Server アプリケーションの開発』を参照してください。
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 ファイルをダウンロードし、ドキュメントを解凍してください。
autotype
Ant タスクを使用して既存の XML スキーマ ファイルから非組み込みデータ型情報を生成した後、servicegen
Ant タスクの typeMappingFile
属性で autotype
によって生成された types.xml
ファイルを指定し、それを servicegen
によって生成された情報と結合した場合に、元の XML スキーマ ファイルで <include>
要素を使用して追加の XML スキーマ ファイルが指定されているときには、これらの XML スキーマ ファイルを生成された EAR ファイルにある Web サービス Web アプリケーション WAR ファイルのルート ディレクトリにコピーする必要があります。wspackage
Ant タスクを使用して、この手順を行うことができます。servicegen
Ant タスクを排他的に使用して非組み込みデータ型コンポーネントを生成している場合は、この手順は不要です。
詳細については、「wspackage Ant タスクを実行する」を参照してください。
ant
と入力し、必要であればこのコマンドにターゲットの引数を渡して (引数を取るように build.xml
を作成した場合)、build.xml
ファイルで指定された Ant タスク (1 つまたは複数) を実行します。
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 タスクは、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
サフィックスを持たない値を servicegen
の destEar
属性に指定して展開ディレクトリを作成することをお勧めします。その展開ディレクトリは、後で、Web サービスがデプロイできる状態になったときに EAR ファイルにパッケージ化できます。
servicegen
Ant タスクは、ほとんどの WebLogic Web サービスのアセンブルで適切に使用できます。ただし、Web サービスをアセンブルする方法についてもっと細かくコントロールする場合は、個別用途の Ant タスクを使用できます。たとえば、source2wsdd
で web-services.xml
ファイルを生成し、情報を追加する必要がある場合にこのファイルを手動で更新できます。
以下の節では、Java または XML スキーマをベースとして Web サービスをアセンブルするための方法について説明します。
次の手順では、すでにバックエンド コンポーネントと非組み込みデータ型の Java コードを記述して Web サービスを作成してあること、および、個別用途の Ant タスクを使用して、非組み込みデータ型を表現する XML スキーマと他の Web サービス コンポーネント (web-services.xml
など) を生成することを前提としています。
手順の詳細については、『WebLogic Server アプリケーションの開発』を参照してください。
ステートレス セッション EJB または Java クラスを使用して Web サービスを実装している場合は、source2wsdd
Ant タスクを使用して web-services.xml
ファイルを生成できます。詳細については、「source2wsdd Ant タスクを実行する」を参照してください。
wsdl2Service
Ant タスクを使用して既存の WSDL ファイルから Web サービスの部分的な実装を生成した場合は、その Ant タスクによって web-services.xml
ファイルがすでに生成されています。 詳細については、「WSDL ファイルに基づき部分的な実装を生成する」を参照してください。
autotype
Ant タスクで自動的に生成されます (「autotype Ant タスクを実行する」を参照)。「clientgen Ant タスクを実行する」を参照してください。
wspackage
Ant タスクを使用して、すべてのコンポーネントをデプロイ可能な EAR ファイルにパッケージ化します (「wspackage Ant タスクを実行する」を参照)。次の手順では、Web サービスの非組み込みデータ型を表現する XML スキーマをベースとし、個別用途の Ant タスクを使用してそれらのデータ型の対応 Java 表現を生成することを前提としています。生成されたそれらの Java クラスを使用して、Web サービスを実装するバックエンド コンポーネントを記述し、次に Ant タスクを使用して残りのコンポーネント (web-services.xml
ファイルなど) を生成します。元の XML スキーマは開発プロセスにわたって保持しておき、Web サービスをデプロイするときに、公開する WSDL に元の XML スキーマが含まれるようにします。
autotype
Ant タスクを実行して、XML スキーマ ファイルの非組み込みデータ型の Java 表現を生成します。また、この Ant タスクでは、XML と Java 間でデータを変換するためのシリアライゼーション クラスとデータ型マッピング ファイルを生成します。autotype
Ant タスクの schemaFile
属性を使用して、XML スキーマを含むファイルの名前を指定します。詳細については、「autotype Ant タスクを実行する」を参照してください。
autotype
Ant タスクによって生成され、メソッドのパラメータまたは戻り値として使用される非組み込みデータ型の Java クラスを使用します。詳細については、「コンポーネントの Java コードの記述」を参照してください。
autotype
Ant タスクを EJB または Java クラスに対して実行して、作成したが元の XML スキーマファイルに含まれない新しいデータ型の非組み込みデータ型コンポーネントを生成します。autotype
Ant タスクの javaComponents
属性を使用して、手順 2 で記述したバックエンド コンポーネントを指定します。 また、typeMappingFile
属性を使用して、手順 1 で autotype
Ant タスクを最初に実行して生成した既存のデータ型マッピング ファイルを指定します。autotype
Ant タスクでは既存の XML スキーマと生成したスキーマが結合されるので、元の XML スキーマが保持されます。
詳細については、「autotype Ant タスクを実行する」を参照してください。
source2wsdd
Ant タスクを実行して、web-services.xml
デプロイメント記述子を生成します。autotype
Ant タスクを実行して結合されたデータ型マッピング ファイルを作成する場合、typesInfo
属性でこの最終的なファイルを指定する必要があります。詳細については、「source2wsdd Ant タスクを実行する」を参照してください。
詳細については、「clientgen Ant タスクを実行する」を参照してください。
最初に使用した元の XML スキーマ ファイルで 1 つまたは複数の <include>
要素を使用して追加の XML スキーマ ファイルが指定されている場合は、これらのファイルを Web サービス Web アプリケーション WAR ファイル (デフォルト名 : web-services.war
、デフォルトの場所 : EAR ファイルのルート ディレクトリ) のルート ディレクトリに明示的にコピーする必要があります。
wspackage
Ant タスクのさまざまな使い方の詳細と例については、「wspackage Ant タスクを実行する」を参照してください。
source2wsdd
Ant タスクを使用すると、Web サービスを実装するステートレス セッション EJB または Java ソース ファイルから web-services.xml
デプロイメント記述子ファイルを生成できます。
source2wsdd
Ant タスクを実行するには、次の手順に従います。
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
はドメインの名前です。
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 タスクを使用すると、シリアライゼーション クラスなどの非組み込みデータ型コンポーネントを生成できます。サポートされている非組み込みデータ型のリストは、「servicegen および autotype Ant タスクでサポートされる非組み込みデータ型」を参照してください。
autotype
Ant タスクを使用するには、次の手順に従います。
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
はドメインの名前です。
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 タスクを実行し、クライアント JAR ファイルを自動的に生成するには、次のように行います。
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
はドメインの名前です。
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 タスクを使用すると、Web サービスのさまざまなコンポーネントをデプロイ可能な新しい EAR ファイルにパッケージ化したり、既存の EAR ファイルに追加したりできます。
wspackage
Ant タスクを実行するには、次の手順に従います。
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
はドメインの名前です。
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.xsd
と included_schema.xsd
が、myservice.war
という既存の WAR ファイルのルート ディレクトリに追加されます (myservice.war は ears/myWebService.ear
という EAR ファイルのルート ディレクトリにあります)。
Web サービスは、Web アプリケーションの WAR ファイルと EJB JAR ファイルが入っているエンタープライズ アプリケーションの標準の EAR ファイルにパッケージ化されています。
次の図は、典型的な WebLogic Web サービス EAR ファイル階層を示しています。
図 6-1 WebLogic Web サービスの EAR ファイルの階層
以降の節の表は、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 タスクは、XML スキーマのデータ型 (Java 表現を生成する対象) が以下の特性すべてを備えている場合は JAX-RPC 仕様に準拠しません。
complexType
であるcomplexType
に 1 つの sequence
が含まれているsequence
に maxOccurs
が 1 より大きい、またはバインドされていない 1 つの element
が含まれている次の例は、そのような 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 サービスは標準 J2EE エンタープライズ アプリケーションとしてパッケージ化されているため、Web サービスのデプロイはエンタープライズ アプリケーションのデプロイと同じです。
エンタープライズ アプリケーションのデプロイの詳細については、『WebLogic Server アプリケーションのデプロイメント』を参照してください。
Web サービスのテストは、WebLogic Web サービス ホーム ページを使用して実行できます。次の「WebLogic Web サービスのホーム ページおよび WSDL の URL」では、その手順を説明します。
WebLogic Server にデプロイされているすべての Web サービスには、ホーム ページがあります。ホーム ページからは、以下の操作ができます。
注意 :ホーム ページから Web サービスをテストするときには、双方向 SSL を使用できません。
以下の URL では、まず、Web サービスのホーム ページを呼び出す方法を示し、次に WSDL を表示します。
[protocol
]://[host
]:[port
]/[contextURI
]/[serviceURI
]
[protocol
]://[host
]:[port
]/[contextURI
]/[serviceURI
]?WSDL
web-servicex.xml
ファイルにある、Web サービスを記述する <web-service>
要素の protocol
属性に対応します。servicegen
Ant タスクを使用して Web サービスをアセンブルした場合は、この値は protocol
属性に対応します。7001
) を指す。application.xml
デプロイメント記述子の <context-root>
要素に対応します。 servicegen
Ant タスクを使用して Web サービスをアセンブルした場合は、この値は contextURI
属性に対応します。 application.xml
ファイルに <context-root>
要素がない場合は、contextURI
の値は、Web アプリケーションのアーカイブ ファイルまたは展開ディレクトリの名前です。
web-services.xml
ファイルにある <web-service>
要素の uri
属性に対応します。servicegen
Ant タスクを使用して Web サービスをアセンブルした場合は、この値は serviceURI
属性に対応します。たとえば、次の 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
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>
![]() ![]() |
![]() |
![]() |