Oracle® Fusion Middleware Oracle WebLogic Server WebLogic Webサービス・リファレンス 12c リリース1 (12.1.1) B65959-01 |
|
前 |
次 |
この章では、WebLogic WebサービスAntタスクに関するリファレンス情報を提供します。
この章の内容は以下のとおりです。
開発環境でこれらのAntタスクを統合して使用し、Webサービス、およびWebサービスを呼び出すクライアント・アプリケーションをプログラミングする方法の詳細は、次のマニュアルを参照してください。
『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』
『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』
Antは、make
コマンドに似たJavaベースのビルド・ツールですが、その機能ははるかに強力です。Antは、XMLベースの構成ファイル(デフォルトではbuild.xml
)を使用してJavaで記述されたタスクを実行します。Webサービスに関する重要なアーティファクトを生成する際に、様々なAntタスクを利用できます。
Apache Webサイトでは、EAR、WAR、EJB JARファイルをパッケージ化するための他の便利なAntタスクも提供されています。詳細は、http://jakarta.apache.org/ant/manual/
にあるApache Antマニュアルを参照してください。
注意: Apache JakartaのWebサイトでは、Antの最新バージョンに関するオンライン・ドキュメントのみを公開しています。このAntは、WebLogic Serverに同梱されているものとはバージョンが異なる可能性があります。WebLogic Serverに同梱されているAntのバージョンを判断するには、WebLogic環境の設定後、次のコマンドを実行します。prompt> ant -version 特定のバージョンのAntのドキュメントを参照するには、 |
次の表では、Oracleが提供するWebサービスAntタスクの概要について説明します。
次の表では、WebサービスAntタスクを使用するための手順をまとめています。
表2-2 Web Services Antタスクの使用の手順
# |
手順 | 説明 |
---|---|---|
1 |
環境を設定します。 |
Windows NTでは、ドメイン・ディレクトリにある UNIXでは、ドメイン・ディレクトリにある |
2 |
WebサービスAntタスクの呼出しを含む |
以下に、 <project name="my-webservice"> <target name="clean"> <delete> <fileset dir="tmp" /> </delete> </target> </project> この |
3 |
実行するWebLogic WebサービスAntタスクごとに、 |
次の例では、
<taskdef name="jwsc"
classname="weblogic.wsee.tools.anttasks.JwscTask" />
<target name="build-service">
<jwsc attributes go here...>
...
</jwsc>
</target>
注意: それぞれのAntタスクに対する |
4 |
|
prompt> ant build-service |
5 |
Webサービスを呼び出すURLに使用するコンテキスト・パスとサービスURIを指定します。(オプション) |
WebLogic Webサービスのコンテキスト・パスの定義の説明に従って、この情報をいくつかの方法で設定可能です。 |
各WebLogic Antタスクには、新しいディレクトリまたはJARファイルを現在のCLASSPATH環境変数に追加できるように、classpath
属性または要素を受け取ります。
次の例では、jwsc
Antタスクのclasspath
属性を使用して、新しいディレクトリをCLASSPATH変数に追加する方法を示します。
<jwsc srcdir="MyJWSFile.java" classpath="${java.class.path};my_fab_directory" ... </jwsc>
次の例では、<classpath>
要素を使用してCLASSPATHに追加する方法を示します。
<jwsc ...> <classpath> <pathelement path="${java.class.path}" /> <pathelement path="my_fab_directory" /> </classpath> ... </jwsc>
次の例では、WebLogic WebサービスAntタスク宣言の外でCLASSPATH変数をビルドしてから、<classpath>
要素を使用してタスク内でその変数を指定する方法を示します。
<path id="myClassID"> <pathelement path="${java.class.path}"/> <pathelement path="${additional.path1}"/> <pathelement path="${additional.path2}"/> </path> <jwsc ....> <classpath refid="myClassID" /> ... </jwsc>
注意: Weblogic ServerのJava Antユーティリティでは、WL_HOME \server\bin ディレクトリ(WL_HOME はWeblogic Serverがインストールされている最上位ディレクトリ)にあるant (UNIX)またはant.bat (Windows)構成ファイルを使用して各種のAnt固有変数を設定します。これらのAnt変数を更新する必要がある場合、使用しているオペレーティング・システム用の構成ファイルを変更します。 |
WebLogic WebサービスのAntタスクの多くには、WSDLまたはXMLスキーマ・ファイルなどのファイルを指定するために使用できる属性があります。
Antタスクは、それらのファイルを大文字と小文字を区別して処理します。つまり、XMLスキーマ・ファイルで名前が大文字と小文字の点でのみ異なるユーザー定義の2つの型(たとえばMyReturnType
とMYRETURNTYPE
)が指定されている場合、clientgen
Antタスクは、ユーザー定義データ型のJava表現に対応する2つの別々のJavaソース・ファイル・セット(MyReturnType.java
とMYRETURNTYPE.java
)を適切に生成します。
ただし、それらのソース・ファイルをそれぞれのクラス・ファイルにコンパイルすると、AntタスクをMicrosoft Windowsで実行する場合に問題が生じる場合があります。Windowsでは、大文字と小文字の区別をしないためです。つまり、Windowsでは、ファイルMyReturnType.java
とMYRETURNTYPE.java
が同じ名前と判断されます。したがって、Windowsでファイルをコンパイルすると、2番目のクラス・ファイルが最初のクラス・ファイルを上書きしてしまい、クラス・ファイルが1つしか残りません。しかしAntタスクは2つのクラスがコンパイルされたものと認識しているので、次のようなエラーが発生することになります。
c:\src\com\bea\order\MyReturnType.java:14: class MYRETURNTYPE is public, should be declared in a file named MYRETURNTYPE.java public class MYRETURNTYPE ^
この問題を回避するには、この種の名前の競合が起こらないようにXMLスキーマを書き換えるか、あるいはそれが不可能な場合は、UNIXなどの大文字と小文字を区別するオペレーティング・システムでAntタスクを実行します。
clientgen
Antタスクは、クライアント・アプリケーションがWebLogic Webサービスと非WebLogic Webサービスの両方の呼出しに使用できるクライアント・コンポーネント・ファイルを既存のWSDLファイルから生成します。
JAX-WS Webサービスに対して生成されるアーティファクトには次のものがあります。
呼出しの対象となる特定のWebサービスに対するService
インタフェース実装のJavaクラス。
JAXBデータ・バインディング・アーティファクト。
WSDLファイルで指定されたユーザー定義XMLスキーマ・データ型のJavaクラス。
JAX-RPC Webサービスに対して生成されるアーティファクトには次のものがあります。
呼出しの対象となる特定のWebサービスに対するStub
およびService
インタフェース実装のJavaクラス。
WSDLファイルで指定されたユーザー定義XMLスキーマ・データ型のJavaソース・コード。
Javaのユーザー定義のデータ型と、WSDLファイル内で指定されたそのデータ型に対応するXMLスキーマ型の間のマッピングに関する情報を格納するJAX-RPCマッピング・デプロイメント記述子ファイル。
WSDLファイルのクライアント側のコピー。
次の2種類のクライアント・アプリケーションが、Webサービスを呼び出すためにclientgen
の生成されたアーティファクトを使用します。
Java Platform, Enterprise Edition (Java EE)バージョン5クライアント・コンテナを使用しないスタンドアロンのJavaクライアント。
EJB、JSP、Webサービスなど、Java EEクライアント・コンテナを使用するJava EEクライアント。
通常、clientgen
のdestDir
属性を使って、すべてのアーティファクトの生成先ディレクトリを指定してから、javac
Antタスクで生成されたJavaファイルをコンパイルします。ただし、AntタスクでJavaファイルをコンパイルし、特定のJARファイルにその他の生成アーティファクトとともにパッケージ化する場合、clientgen
のdestFile
属性を使用できます。destFile
およびdestDir
の両方を指定することはできませんが、いずれか1つを指定する必要があります。
次の項では、clientgen
Antタスクの詳細について説明します。
<taskdef name="clientgen" classname="weblogic.wsee.tools.anttasks.ClientGenTask" />
<taskdef name="clientgen" classname="weblogic.wsee.tools.anttasks.ClientGenTask" /> ... <target name="build_client"> <clientgen wsdl="http://example.com/myapp/myservice.wsdl" destDir="/output/clientclasses" packageName="myapp.myservice.client" serviceName="StockQuoteService" /> <javac ... /> </target>
サンプルのbuild_client
ターゲットが実行されるときに、clientgen
は、wsdl
属性で指定したWSDLファイルを使用して、serviceName
属性で指定したWebサービスの呼出しに必要なクライアント側アーティファクトをすべて生成します。clientgen
Antタスクは、すべてのアーティファクトを/output/clientclasses
ディレクトリに生成します。生成されたJavaコードは、すべてmyapp.myservice.client
パッケージにあります。clientgen
が終了すると、javac
Antタスクは、clientgen
が生成したJavaコード、および生成されたアーティファクトを使用してユーザーのビジネス・コードを格納する独自のクライアント・アプリケーションのJavaコードをコンパイルします。
clientgen
Antタスクで生成されたアーティファクトをコンパイルおよびパッケージ化する場合、次に示すようにdestDir
ではなく、destFile
属性を指定します。
<clientgen wsdl="http://example.com/myapp/myservice.wsdl" destFile="/output/jarfiles/myclient.jar" packageName="myapp.myservice.client" serviceName="StockQuoteService" />
上の例の場合、build.xml
ファイルでclientgen
の後にjavac
Antタスクを指定する必要はありません。これは、Javaコードがすでにコンパイルされているためです。
通常は、Webにデプロイされ、HTTPを使用してアクセスされるWSDLファイル上でclientgen
Antタスクを実行します。しかし場合によっては、jwsc
Antタスクによって生成されたWARまたはJARファイルなどのアーカイブ・ファイルにパッケージ化された静的なWSDLファイル上でclientgen
を実行することが必要になります。その場合は、以下のwsdl
属性の構文を使用する必要があります。
wsdl="jar:file:archive_file!WSDL_file"
ここで、archive_file
はアーカイブ・ファイルの(カレント・ディレクトリに対して)完全なまたは相対的な名前、WSDL_file
はアーカイブ・ファイルのルート・ディレクトリに対して相対的なWSDLファイルのフルパス名を表します。例:
<clientgen wsdl="jar:file:output/myEAR/examples/webservices/simple/SimpleImpl.war!/WEB-INF/SimpleService.wsdl" destDir="/output/clientclasses" packageName="myapp.myservice.client"/>
上記の例では、clientgen
をSimpleService.wsdl
という静的なWSDLファイル上で実行する方法を示しています。このWSDLファイルはSimpleImpl.war
というWARファイルのWEB-INF
ディレクトリ内にパッケージ化されています。WARファイルはbuild.xml
ファイルが格納されているディレクトリのoutput/myEAR/examples/webservices/simple
サブディレクトリにあります。
標準のAnt <sysproperty>
のネストされた要素を使用して、有効なWebLogic Serverユーザーのユーザー名およびパスワード(Webサービスに対してアクセス制御が有効化されている場合)、または信頼性のある証明書を格納するクライアント側のトラスト・ストアの名前などのJavaプロパティを設定できます。次に例を示します。
<clientgen wsdl="http://example.com/myapp/mySecuredService.wsdl" destDir="/output/clientclasses" packageName="myapp.mysecuredservice.client" serviceName="SecureStockQuoteService" <sysproperty key="javax.net.ssl.trustStore" value="/keystores/DemoTrust.jks"/> <sysproperty key="weblogic.wsee.client.ssl.stricthostchecking" value="false"/> <sysproperty key="javax.xml.rpc.security.auth.username" value="juliet"/> <sysproperty key="javax.xml.rpc.security.auth.password" value="secret"/> </clientgen>
上の例では、クライアント・アーティファクトの生成対象であるWebサービスがJAX-RPCに基づいていることを前提としています。次の例では、type
属性を使用してWebサービスがJAX-WSに基づいていることを指定する方法を示します。
<clientgen
type="JAXWS"
wsdl="http://${wls.hostname}:${wls.port}/JaxWsImpl/JaxWsImplService?WSDL"
destDir="/output/clientclasses"
packageName="examples.webservices.jaxws.client"/>
clientgen
Antタスクには、次のWebLogic固有の子要素があります。
clientgen
Antタスクで設定可能な、標準のAnt javac
タスクに関連する要素のリストについては、「clientgenに適用される標準のAnt属性および要素」を参照してください。
<binding>
子要素は、次のいずれかを指定するために使用します。
1つまたは複数のカスタマイズ・ファイル(JAX-WSの場合)。このファイルには、1つまたは複数の次の要素を指定します。
JAX-WSおよびJAXBカスタム・バインディング宣言。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のバインディング宣言を使用したXML Schema-to-Javaマッピングのカスタマイズに関する項を参照してください。
SOAPハンドラ・ファイル。詳細は、『Oracle WebLogic Server JAX-WS Webサービスの高度な機能のプログラミング』のSOAPメッセージ・ハンドラの作成と使用に関する項を参照してください。
JAX-RPCの場合、1つ以上のXMLBeans構成ファイル(慣例により、.xsdconfig
で終わります)。Webサービスで、パラメータまたは戻り値としてApache XMLBeans(http://xmlbeans.apache.org/
)データ型を使用している場合、この要素を使用します。
<binding>
要素は、標準のAnt <Fileset>
要素に似ており、同じ属性をすべて持ちます。指定可能な属性の完全なリストの詳細は、http://ant.apache.org/manual/Types/fileset.html
にある、Fileset要素に関するApache Antのドキュメントを参照してください。
注意: <binding> 要素は、WebLogic Server 10.0から非推奨になった<xsdConfig> 要素にかわるものです。 |
注意: <xmlcatalog> 子要素はJAX-WSにのみ適用されます。JAX-RPCには適用されません。 |
<xmlcatalog>
子要素には、組込みXMLカタログのIDを指定します。要素の構文は次のとおりです。
<xmlcatalog refid="id"/>
<xmlcatalog>
によって参照されるIDは、組込みXMLカタログのIDと一致していなければなりません。build.xml
ファイルにXMLカタログを組み込むには、次の構文を使用します。
<xmlcatalog id="id"> <entity publicid="public_id" location="uri"/> </xmlcatalog>
上の構文で、public_id
には元のXMLリソース(WSDLまたはXSD)のパブリックIDを指定し、uri
には置換XMLリソースを指定します。
以下の例は、XMLカタログを組み込んでclientgen
を使用して参照する方法を示しています。関連するコード行は太字で示しています。
<target name="clientgen">
<clientgen
type="JAXWS"
wsdl="${wsdl}"
destDir="${clientclasses.dir}"
packageName="xmlcatalog.jaxws.clientgen.client"
catalog="wsdlcatalog.xml">
<xmlcatalog refid="wsimportcatalog"/>
</clientgen>
</target>
<xmlcatalog id="wsimportcatalog">
<entity publicid="http://helloservice.org/types/HelloTypes.xsd"
location="${basedir}/HelloTypes.xsd"/>
</xmlcatalog>
詳細は、『Oracle WebLogic Server JAX-WS Webサービスの高度な機能のプログラミング』のXMLカタログの使用に関する項を参照してください。
次の項の表では、clientgen
Antタスクの属性について説明します。また、各属性について、JAX-WSまたはJAX-RPC Webサービス(あるいは両方)で有効かどうかも示します。clientgen
Antタスクで設定可能な、標準のAnt javac
タスクに関連する属性のリストについては、「clientgenに適用される標準のAnt属性および要素」を参照してください。
表2-3 WebLogic固有のclientgen Antタスクの属性
属性 | 説明 | データ型 | 必須? | JAX-WS/JAX-RPC/両方 |
---|---|---|---|---|
autoDetectWrapped |
WSDLファイルを解析してクライアント・スタブを作成する場合、 この属性の有効な値は、 |
ブール |
いいえ |
JAX-RPC |
catalog |
外部XMLカタログ・ファイルを指定します。XMLカタログ・ファイルの作成の詳細は、『Oracle WebLogic Server JAX-WS Webサービスの高度な機能のプログラミング』のXMLカタログの使用に関する項を参照してください。 |
String |
いいえ |
JAX-WS |
|
WSDLをclientgenタスクの宛先ディレクトリ内のどこにコピーするかを制御します。 |
ブール |
いいえ |
JAX-WS |
destDir |
この属性は、任意のディレクトリに設定できます。ただし、EJB、JSP、または別のWebサービスからWebサービスを呼び出すクライアント・コンポーネント・ファイルを生成する場合、この属性は通常、共有クラスを保持するJava EEコンポーネントのディレクトリ(たとえば、EJBの場合は |
String |
|
両方 |
destFile |
JARファイルを作成または更新するには、 存在しないJARファイルまたはディレクトリを指定すると、 |
String |
|
両方 |
failonerror |
この属性の有効な値は、 |
ブール |
いいえ |
両方 |
generateAsyncMethods |
たとえば、 注意: Webサービス操作が一方向としてマークされている場合、 この属性の有効な値は、 |
ブール |
いいえ |
JAX-RPC |
generatePolicyMethods |
この属性の有効な値は、 詳細は、『Oracle WebLogic Server WebLogic Webサービスの保護』のクライアント側セキュリティWS-Policyファイルの使用に関する項を参照してください。 |
ブール |
いいえ |
JAX-RPC |
getRuntimeCatalog |
|
ブール |
いいえ |
JAX-WS |
handlerChainFile |
クライアント・アプリケーションがWebサービスを呼び出すときに実行されるクライアント側SOAPメッセージ・ハンドラを記述するXMLファイルの名前を指定します。 ファイルで指定された各ハンドラは、以下のタイミングで2回実行されます。
この クライアント側SOAPメッセージ・ハンドラの作成の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のクライアント側のSOAPメッセージ・ハンドラの作成と使用に関する項を参照してください。 |
String |
いいえ |
JAX-RPC |
includeGlobalTypes |
この属性の有効な値は、 |
ブール |
いいえ |
JAX-RPC |
jaxRPCWrappedArrayStyle |
この属性の有効な値は、 |
ブール |
いいえ |
JAX-RPC |
packageName |
生成されたクライアント・インタフェースとスタブ・ファイルをパッケージ化するパッケージ名。 この属性を指定しない場合、 この属性を指定しなかった場合、パッケージ名にはすべて小文字を使用することを推奨します。 |
String |
いいえ |
両方 |
serviceName |
対応するクライアント・コンポーネント・ファイルが生成されるWSDLファイル内のWebサービスの名前。 Webサービス名はWSDLファイル内の この名前は、生成されたマッピング・ファイル、およびWSDLファイルのクライアント側のコピーで使用されます。たとえば、 |
String |
この属性は、WSDLファイルに複数の この属性を指定しておらず、1つまたは複数の |
JAX-RPC |
|
XSDファイルでは、名前付きのグローバル型と名前なしのローカル型の2つの複合型が定義されています。デフォルトでは、 有効にすると、 |
ブール |
いいえ |
JAX-RPC |
type |
クライアント・アーティファクトの生成対象であるWebサービスのタイプ(JAX-WSまたはJAX-RPC)を指定します。 有効な値は以下のとおりです。
デフォルト値は |
String |
いいえ |
両方 |
wsdl |
クライアント・コンポーネント・ファイルの生成が必要な(WebLogicまたは非WebLogic)Webサービスを記述するWSDLのフルパス名またはURL。 クライアントJARファイル内の生成されたスタブ・ファクトリ・クラスは、デフォルト・コンストラクタ内のこの属性の値を使用します。 |
String |
はい |
両方 |
|
|
String |
いいえ |
JAX-WS |
WebLogic定義のclientgen
属性の他に、次に示す標準javac
属性も定義できます。各属性の詳細は、http://ant.apache.org/manual/
にあるAntのドキュメントを参照してください。
bootclasspath
bootClasspathRef
classpath
classpathRef
compiler
debug
debugLevel
depend
deprecation
destdir
encoding
extdirs
failonerror
fork
includeantruntime
includejavaruntime
listfiles
memoryInitialSize
memoryMaximumSize
nowarn
optimize
proceed
source
sourcepath
sourcepathRef
tempdir
verbose
標準のAnt <sysproperty>
子要素を使用して、クライアント側アーティファクトの生成元Webサービスで必要となるプロパティを指定できます。たとえば、Webサービスが保護される場合、javax.xml.rpc.security.auth.username|password
プロパティを使用して、認証されたユーザー名およびパスワードを設定できます。<sysproperty>
の詳細は、java
Antタスクに関するAntのドキュメント(http://ant.apache.org/manual/
)を参照してください。
clientgen
Antタスクでは、次の標準Ant子要素も使用できます。
<FileSet>
<SourcePath>
<Classpath>
<Extdirs>
jwsc
Antタスクは、標準JWSアノテーションとWebLogic固有のJWSアノテーションの両方を格納する1つ以上のJava Webサービス(JWS)ファイルを入力として取り、WebLogic Webサービスの作成に必要なアーティファクトをすべて生成します。
JAX-WS Webサービスに対して生成されるアーティファクトには次のものがあります。
サービス・エンドポイント・インタフェース(JWS_ClassName
PortType.java
、JWS_ClassName
はJWSクラスを示す)などのJSR-109 Web Serviceクラス・ファイル(http://www.jcp.org/en/jsr/detail?id=109
)。
JAXBデータ・バインディング・アーティファクト・クラス・ファイル。
必要な全デプロイメント記述子。以下を含みます。
サーブレット・ベースのWebサービス・デプロイメント記述子ファイル(web.xml
)。
Earデプロイメント記述子ファイルapplication.xml
およびweblogic-application.xml
です。
注意: JAX-WS Webサービスの場合、次の点に注意してください。
|
JAX-RPC Webサービスに対して生成されるアーティファクトには次のものがあります。
サービス・エンドポイント・インタフェース(JWS_ClassName
PortType.java
、JWS_ClassName
はJWSクラスを示す)などのJSR-109 Web Serviceクラス・ファイル(http://www.jcp.org/en/jsr/detail?id=175
)。
必要な全デプロイメント記述子。以下を含めることができます。
標準およびWebLogic固有のWebサービスのデプロイメント記述子(webservices.xml
、weblogic-webservices.xml
およびweblogic-webservices-policy.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ファイル。
すべてのアーティファクトを生成すると、jwsc
Antタスクは、JavaファイルおよびJWSファイルをコンパイルします。次に、コンパイルされたクラスおよび生成されたアーティファクトを、デプロイ可能なWebアプリケーションWARファイルにパッケージ化し、最後に、そのJARファイルを格納する、展開されたエンタープライズ・アプリケーション・ディレクトリを作成します。このエンタープライズ・アプリケーションをWebLogic Serverにデプロイします。
デフォルトでは、jwsc
AntタスクはJAX-RPC仕様に準拠したWebサービスを生成します。ただし、<jws>
子要素のtype
属性を使用して、生成されるWebサービスのタイプを指定することもできます。たとえば、JAX-WS Webサービスを生成するには、<jws>
子要素のtype="JAXWS"
属性を設定します。
注意: 標準的ではありませんが、JWSファイルをコーディングして、javax.ejb.SessionBean を明示的に実装できます。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のステートレス・セッションEJBを実装すべき場合に関する項を参照してください。ただし、これは標準的ではないので、この項では、jwsc はWebアプリケーションWARファイルにWebサービスをパッケージ化し、EJB固有の情報は必要な場合にのみ生成されるものとします。 |
jws
の説明に従って、jwsc
Antタスクが<jws>要素を使用してコンパイルするJWSファイルまたはファイルを指定します。<jws>
要素がjwsc
Antタスクの直接の子である場合、jwsc
はJWSファイルごとに個別のWARファイルを生成します。すべてのJWSファイルを、サポート・アーティファクトとともに、単一の WARファイル内にパッケージ化する場合、すべての<jws>
要素を単一の<module>
要素の下でグループ化します。WARファイルを1つにすることによって、WebLogicサーバーのリソースが減り、Webサービスは、ユーザー定義のデータ型などの共通オブジェクトを共有できます。この方法を使用すると、Webサービスに対して同じコンテキスト・パスを指定することもできます。個別のWARファイルにパッケージ化した場合、各サービスも一意のコンテキスト・パスを持つ必要があります。
<module>
要素を使用する場合、<jws>
を使って各JWSファイルを個別にリストするよりは、<jwsfileset>
子要素を使うと、1つまたは複数のディレクトリ内のJWSファイルのリストを検索できます。
以下の項では、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サービスのコンテキスト・パス(コンテキスト・ルートとも呼ばれます)は、様々な場所で指定できます。この項では、サービスのコンテキスト・パスが複数の場所で設定されている場合でも、構成に基づいてサービスの正しいコンテキスト・パスを判別する方法について説明します。
この説明では、Webサービスのコンテキスト・パスとは、WebサービスURLのhost:port
部分の後にくる文字列を指します。たとえば、WebLogic WebサービスのデプロイされたWSDLが次のとおりであるとします。
http://hostname:7001/financial/GetQuote?WSDL
financial
が、このWebサービスのコンテキスト・パスです。
次に、コンテキスト・パスを指定できるすべての場所の優先順位を、重要度の高い順番で示します。
<module>
要素および<jws>
要素のcontextPath
属性(jwsc
Antタスクの直接の子として使用される場合)
<jws>
の<WL
XXX
Transport>
子要素のcontextPath
属性。
@WL
XXX
Transport
JWSアノテーションのcontextPath
属性(JAX-RPC Webサービスのみ)。
注意: このオプションはJAX-RPC Webサービスにのみ適用されます。 |
コンテキスト・パスのデフォルト値(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ファイル内で異なるコンテキスト・パスを使用することはできません。
コンパイルする1つ以上のJWSファイル自体に、別のWebサービスの呼出しが含まれる場合、jwsc
の<clientgen>
要素を使用すると、呼び出す特定のWebサービスのStub
およびService
インタフェース実装など、必要なクライアント・コンポーネント・ファイルを生成およびコンパイルできます。これらのファイルは、Webサービスの呼出しで利用できるように、生成されるWARファイル内にパッケージ化されます。
通常、jwsc
は、destDir
属性で指定された場所にエンタープライズ・アプリケーションの展開されたディレクトリを新規に作成します。ただし、既存のエンタープライズ・アプリケーションを宛先のディレクトリとして指定した場合、jwsc
は、既存のapplication.xml
ファイルを新しいWebサービス情報で書き換えて更新します。
同様に、jwsc
は通常、生成されるWebアプリケーションを記述する新しいWebアプリケーションのデプロイメント記述子(web.xml
およびweblogic.xml
)を生成します。ただし、Webサービスの追加対象となる既存のWebアプリケーションがある場合、<module>
要素の<descriptor>
子要素を使用すると、既存のweb.xml
およびweblogic.xml
ファイルを指定できます。この場合、jwsc
は、これらのファイルをdestDir
ディレクトリにコピーし、それらに新しい情報を追加します。その他の既存のWebアプリケーション・ファイルをdestDirディレクトリにコピーするには、標準のAnt <fileset>
要素を使用します。
注意: <descriptor> 要素で指定される既存のweb.xml およびweblogic.xml ファイルは、検証エラーでjwsc Antタスクが失敗するDTDベースではなく、XMLスキーマ・ベースである必要があります。 |
<taskdef name="jwsc" classname="weblogic.wsee.tools.anttasks.JwscTask" />
次の例では、Webサービスを繰り返し開発するbuild.xml
Antファイルのbuild-service
ターゲットに指定することでjwsc
Antタスクを使用する方法を示します。その他、WebLogic Webサービスを繰り返し開発する際に役立つclean
、deploy
、client
、run
などの様々なターゲットを含むbuild.xml
ファイルの完全な例については、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』または『Oracle WebLogic Server JAX-RPC Webサービス・スタート・ガイド』を参照してください。
以下のサンプルでは、非常に単純なjwsc
の使い方を示します。
<target name="build-service"> <jwsc srcdir="src" destdir="output/TestEar"> <jws file="examples/webservices/jwsc/TestServiceImpl.java" /> </jwsc> </target>
上の例では、TestServiceImpl.java
というJWSファイルがbuild.xml
ファイルを格納したディレクトリのsrc/examples/webservices/jwsc
サブディレクトリにあります。jwsc
Antタスクは、Webサービスのアーティファクトをoutput/TestEar
サブディレクトリに生成します。jwsc
Antタスクでは、WebサービスJARファイルに加え、エンタープライズ・アプリケーションを記述したapplication.xml
ファイルもoutput/TestEar/META-INF
ディレクトリに生成されます。
以下のサンプルでは、上記の例よりも複雑なjwsc
の使い方を示します。
<path id="add.class.path"> <pathelement path="${myclasses-dir}"/> <pathelement path="${java.class.path}"/> </path> ... <target name="build-service2"> <jwsc srcdir="src" destdir="output/TestEar" verbose="on" debug="on" keepGenerated="yes" classpathref="add.class.path" > <jws file="examples/webservices/jwsc/TestServiceImpl.java" /> <jws file="examples/webservices/jwsc/AnotherTestServiceImpl.java" /> <jws file="examples/webservices/jwsc/SecondTestServiceImpl.java" /> </jwsc> </target>
上の例では、デバッグと冗長出力を有効にしており、jwsc
が出力ディレクトリに既存の一時ファイルを生成しないように指定しています。また、classpathref
属性による標準CLASSPATHへの追加方法が示されています。ここでは、build.xml
ファイルの別の場所で標準のAnt <path>
ターゲットに指定されているadd.class.path
というパスを参照することで、CLASSPATHに追加しています。
さらに、複数のJWSファイルが指定されており、個別のWebアプリケーションWARファイルに分割してパッケージ化されたWebサービスが、同じエンタープライズ・アプリケーションの一部としてデプロイされます。3つのWebサービスをすべて、単一のWARファイル内にパッケージ化する場合、<jws>
要素を単一の<module>
要素の下でグループ化します(次の例を参照)。
<target name="build-service3"> <jwsc srcdir="src" destdir="output/TestEar" > <module contextPath="test" name="myJar" > <jws file="examples/webservices/jwsc/TestServiceImpl.java" /> <jws file="examples/webservices/jwsc/AnotherTestServiceImpl.java" /> <jws file="examples/webservices/jwsc/SecondTestServiceImpl.java" /> </module> </jwsc> </target>
上の例では、3つのWebサービスすべてをmyJAR.war
というWARファイルにパッケージ化しています。このファイルは、エンタープライズ・アプリケーションの展開されたディレクトリの最上位にあります。<module>
のcontextPath
属性では、3つのWebサービスのコンテキスト・パスがtest
であることを指定しています。この値は、JWSファイルのトランスポート・アノテーションで指定されているコンテキスト・パスをオーバーライドします。
次の例では、すべてのトランスポート(HTTP、HTTPS、JMS)を使用してWebサービスを呼び出す方法を示します。
<target name="build-service4"> <jwsc srcdir="src" destdir="output/TestEar"> <jws file="examples/webservices/jwsc/TestServiceImpl.java"> <WLHttpTransport contextPath="TestService" serviceUri="TestService" portName="TestServicePortHTTP"/> <WLJmsTransport contextPath="TestService" serviceUri="JMSTestService" portName="TestServicePortJMS" queue="JMSTransportQueue"/> <clientgen wsdl="http://examples.org/complex/ComplexService?WSDL" serviceName="ComplexService" packageName="examples.webservices.simple_client"/> </jws> </jwsc> </target>
上の例では、<clientgen>
要素を使用し、http://examples.org/complex/ComplexService?WSDL
によって記述されるWebサービスのクライアント側アーティファクト(Stub
およびService
実装など)を生成および格納する方法も示しています。これは、Webサービスの実装に加え、TestServiceImpl.java
JWSファイルもComplexService
Webサービスに対してクライアントとして機能し、ComplexService
の操作を呼び出すJavaコードを持つ必要があることを示しています。
次の例は、上の例とよく似ていますが、<jws>
要素を1つの<module>
要素の下でグループ化する点が異なります。
<target name="build-service5"> <jwsc srcdir="src" destdir="output/TestEar"> <module contextPath="TestService" > <jws file="examples/webservices/jwsc/TestServiceImpl.java"> <WLHttpTransport serviceUri="TestService" portName="TestServicePort1"/> </jws> <jws file="examples/webservices/jwsc/AnotherTestServiceImpl.java" /> <jws file="examples/webservices/jwsc/SecondTestServiceImpl.java" /> <clientgen wsdl="http://examples.org/complex/ComplexService?WSDL" serviceName="ComplexService" packageName="examples.webservices.simple_client" /> </module> </jwsc> </target>
上の例では、個々のトランスポート要素で各自のcontextPath
属性を定義するのではなく、その親の<module>
要素でかわりに定義しています。これによって、jwsc
による実際の処理が分かりやすくなり、メンテナンス性も向上します。また、<clientgen>
要素は<module>
の子であって、前の例のように<jws>
の子ではない点に注意してください。
次の例では、<jwsfileset>
要素の使用方法を示します。
<target name="build-service6"> <jwsc srcdir="src" destdir="output/TestEar" > <module contextPath="test" name="myJar" > <jwsfileset srcdir="src/examples/webservices/jwsc" > <include name="**/*.java" /> </jwsfileset> </module> </jwsc> </target>
この例では、jwsc
が、build.xml
を格納するディレクトリを基準とする相対パスsrc/examples/webservices/jwsc
内の*.java
ファイルを検索し、JWSアノテーションを格納するJavaファイルを確定してから、各ファイルをあたかも<module>
の<jws>
子要素で指定されていたかのように処理します。<include>
要素はhttp://ant.apache.org/manual/
にある標準のAnt要素であり、標準の<FilesSet>
タスクのドキュメントで説明されています。
次の例では、jwsc
Antタスクで新しいWebアプリケーション・デプロイメント記述子を作成せずに、既存の記述子に追加するように指定する方法を示します。
<target name="build-service7"> <jwsc srcdir="src" destdir="output/TestEar" > <module contextPath="test" name="myJar" explode="true" > <jws file="examples/webservices/jwsc/AnotherTestServiceImpl.java" /> <FileSet dir="webapp" > <include name="**/*.java" /> </FileSet> <descriptor file="webapp/WEB-INF/web.xml" /> <descriptor file="webapp/WEB-INF/weblogic.xml" /> </module> </jwsc> </target>
上の例では、<module>
のexplode="true"
属性において、生成されるWebアプリケーションが、デフォルトのWARアーカイブ・ファイルではなく、展開されたディレクトリ形式で格納されることを指定しています。<descriptor>
子要素では、jwsc
が、build.xml
ファイルを格納するディレクトリのwebapp/WEB-INF
サブディレクトリにある既存のweb.xml
およびweblogic.xml
ファイルを新しいWebアプリケーションの展開されたディレクトリにコピーし、指定したJWSファイルの新しいWebサービス情報がこれらのファイルに追加される(jwsc
で新しいファイルを作成しない)ことを指定しています。また、http://ant.apache.org/manual/
にある標準のAnt <FileSet>
タスクを使用して追加のファイルを生成されたWARファイルにコピーする方法も示しています。コピーされるファイルのいずれかがJavaファイルである場合、jwsc
Antタスクはそのファイルをコンパイルし、コンパイルしたクラスをWebアノテーションのclasses
ディレクトリに配置します。
デフォルトでは、上のすべての例でJAX-RPC Webサービスが生成されます。次の簡単な例では、<jws>
子要素のtype="JAXWS"
属性を指定してJAX-WS Webサービスを生成する方法を示します。
<target name="build-service8">
<jwsc
srcdir="src"
destdir="${ear-dir}">
<jws file="examples/webservices/jaxws/JaxWsImpl.java"
type="JAXWS"
/>
</jwsc>
</target>
<jws>
要素または<jwsfileset>
要素のtype属性を指定できます。
jwsc
Antタスクには、様々な属性と、<jws>
、<module>
、および<binding>
という3つの子要素があります。詳細は、それぞれ、「jws」、「module」、および「binding」を参照してください。
<module>
要素は、1つまたは複数のJWSファイル(<jws>
要素でも指定される)を、単一のモジュール(WARファイル)にグループ化します。<module>
を指定しない場合、各JWSファイルは、各自のモジュールまたはWARファイルにパッケージ化されます。
<jws>
要素(<jwsc>
または<module>
の子要素として使用される場合)には、<WLHttpTransport>
、<WLHttpsTransport>
、および<WLJMSTransport>
という3種類の子要素(オプション)があります。詳細は、それぞれ、「WLHttpTransport」、「WLHttpsTransport」、および「WLJMSTransport」を参照してください。トランスポート要素の使用方法については、「Webサービスの呼出しに使用されるトランスポートの指定」を参照してください。
<clientgen>
および<descriptor>
要素は、<module>の子ではなくjwsc
の子として使用される場合の<jws>
か、実際の<module>
要素自体のいずれかの、モジュールを生成する要素の子としてのみ使用します。
<jwsfileset>
要素は、<module>
の子としてのみ使用できます。
次の図は、jwsc
Antタスクの階層構造を示しています。
次の項では、jwsc
Antタスクの属性について説明します。jwsc
Antタスクで設定可能な、標準のAnt javac
タスクに関連する属性のリストについては、「jwscに適用される標準のAnt属性および子要素」を参照してください。
次の表は、WebLogic固有のjwsc
属性をまとめたものです。
表2-4 jwsc Ant Taskの属性
属性 | 説明 | 必須? | JAX-RPC/JAX-WS/両方 |
---|---|---|---|
applicationXml |
エンタープライズ・アプリケーションの ファイルが存在しない場合、 この属性を指定しなかった場合、 |
いいえ |
両方 |
destdir |
コンパイルしたJWSファイル、XMLスキーマ、WSDL、生成されたデプロイメント記述子ファイルを含む、JARファイルまたはWARファイルにパッケージ化された全ファイルを格納するディレクトリのフルパス名。
|
はい |
両方 |
destEncoding |
デプロイメント記述子またはXMLファイルなどの出力ファイルの文字エンコーディングを指定します。文字エンコーディングの例としては、SHIFT-JISやUTF-8などがあります。 この属性のデフォルト値はUTF-8です。 |
いいえ |
両方 |
dotNetStyle |
jwsc Antタスクで.NETスタイルのWebサービスを生成するかどうかを指定します。 具体的にはWebサービスのWSDL内で、戻り値のパラメータに対応する<part>要素の この属性の有効な値は、 |
いいえ |
JAX-RPC |
enableAsyncService |
Webサービスが、WebLogic Webサービスの非同期機能(信頼性のあるWebサービス・メッセージング、非同期リクエストおよびレスポンス、バッファリング、会話)を1つ以上使用するかどうかを指定します。 信頼性のあるWebサービス・メッセージングの場合、信頼性のあるWebサービス、およびその操作を確実に呼び出すWebサービスの双方に対して、この属性が有効になっていることを確認する必要があります。その他の機能(会話、非同期リクエストおよびレスポンス、バッファリング)の場合は、クライアントWebサービスに対してのみこの属性を有効にする必要があります。 この属性が この属性の有効な値は、 注意:この属性はWebLogic Server 9.2では非推奨です。 |
いいえ |
非推奨の属性のため、適用不可 |
keepGenerated |
Antタスクで生成されたJavaソース・ファイルおよびアーティファクトがすでに存在する場合、それを再生成するかどうかを指定します。
この属性の有効な値は、 |
いいえ |
両方 |
sourcepath |
パラメータとして使用されるJavaBeanやユーザー定義の例外など、JWSファイルで参照されるJavaファイルを格納する最上位ディレクトリのフルパス名。Javaファイルは、そのパッケージ名に対応するsourcepathディレクトリのサブディレクトリ内にあります。 たとえば、 この属性のデフォルト値は |
いいえ |
両方 |
srcdir |
コンパイルするJWSファイル( たとえば、 |
はい |
両方 |
srcEncoding |
JWSファイルまたは構成XMLファイルなどの入力ファイルの文字エンコーディングを指定します。文字エンコーディングの例としては、SHIFT-JISやUTF-8などがあります。 この属性のデフォルト値は、JVMに対する文字エンコーディング・セットです。 |
いいえ |
両方 |
WebLogic定義のjwsc
属性の他に、次に示す標準javac
属性も定義できます。各属性の詳細は、http://ant.apache.org/manual/
にあるAntのドキュメントを参照してください。
bootclasspath
bootClasspathRef
classpath
classpathRef
compiler
debug
debugLevel
depend
deprecation
destdir
encoding
extdirs
failonerror
fork
includeantruntime
includejavaruntime
listfiles
memoryInitialSize
memoryMaximumSize
nowarn
optimize
proceed
source
sourcepath
sourcepathRef
tempdir
verbose
jwsc
Antタスクでは、次の標準Ant子要素も使用できます。
<SourcePath>
<Classpath>
<Extdirs>
jwsc
Antタスクの<jws>
子要素および<module>
子要素と一緒に、以下の標準のAnt要素を使用できます。
<FileSet>
<ZipFileSet>
<jws>
要素では、特定のWebサービスを実装するJWSファイルの名前を指定しますが、Antタスクは、このWebサービス向けにJavaコードとサポート・アーティファクトを生成し、エンタープライズ・アプリケーション内でデプロイ可能なWARファイルにパッケージ化します。
<jws>
要素は、jwsc
要素階層の次の2つのレベルで指定できます。
jwsc
Antタスクの直接の子要素。この場合、jwsc
は各JWSファイルに個別のWARファイルを生成します。一般的に、jwsc
Antタスクに対してJWSファイルを1つのみ指定している場合にこの方法を使用します。
jwsc
の子である<module>
要素の子要素。この場合、jwsc
は、<module>
要素内でグループ化されているすべてのJWSファイルの生成されたコードおよびアーティファクトをすべて含むWARファイルを1つ生成します。この方法は、共通のJavaデータ型など、サポート・ファイルをすべてのJWSファイルで共有する場合に有効です。
jwsc
の子要素である<module>
または<jws>
のいずれかを指定する必要があります。
この要素がjwsc
要素階層のどの場所にくるのかを視覚的に確認するには、図2-1を参照してください。この要素の使用例については、「例」を参照してください。
jwsc
の<jws>
要素と一緒に、標準のAnt <FileSet>
子要素を使用できます。
JAX-WS Webサービス、JAX-RPC Webサービスのいずれを生成する場合でも、<jws>
子要素を使用できます。
次の表では、<jws>
要素の属性について説明します。この表では、<jws>
がjwsc
の子である場合、<module>
の子である場合、またはその両方の場合に属性が適用されるかどうかを説明しています。
表2-5 jwsc Antタスクの<jws>要素の属性
属性 | 説明 | 必須? | JAX-RPC/JAX-WS/両方 |
---|---|---|---|
compiledWsdl |
既存のWSDLファイルを基に この属性は、まずwsdlc Antタスクを使用して、生成されたJWSインタフェースを実装するJWSファイルとともにJARファイルを生成する「WSDLファイルから開始する」ケースでのみ使用します。JWS実装クラスをビジネス・ロジックで更新したら、この更新したJWS実装ファイルを JWSファイルを最初から記述し、Webサービスを記述したWSDLファイルがWebLogic Webサービス・ランタイムによって生成される「Javaから開始する」ケースでは、
|
「WSDLから開始する」ケースでのみ必須 |
両方 |
contextPath |
Webサービスのコンテキスト・パス(コンテキスト・ルート)。 たとえば、WebLogic WebサービスのデプロイされたWSDLが次のとおりであるとします。 http://hostname:7001/financial/GetQuote?WSDL
この属性の値は、JWSファイルで設定されているその他のコンテキスト・パスをオーバーライドします。これには、 この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルが
|
いいえ |
両方 |
explode |
デプロイ可能なWebサービスを格納する生成済のWARファイルを、展開ディレクトリ形式にするかどうかを指定します。 この属性の有効な値は、
|
いいえ |
両方 |
file |
コンパイルするJWSファイルの名前。
|
はい |
両方 |
|
生成されたWARファイルにWEB-INFディレクトリのWSDLファイルを含めるかどうかを指定します。この属性の有効な値は、
|
はい |
JAX-WS |
includeSchemas |
Webサービスの 複数のXMLスキーマ・ファイルを指定するには、カンマまたはセミコロンをデリミタとして使用します。 includeSchemas="po.xsd,customer.xsd" この属性は、JWSファイルがWebサービス操作のパラメータまたは戻り値として明示的に また、この属性は、SOAPバインディングがdocument-literal-bareのWebサービスでのみ使用可能です。WebLogic WebサービスのデフォルトSOAPバインディングはdocument-literal-wrappedなので、対応するJWSファイルには、次のJWSアノテーションを指定する必要があります。 @SOAPBinding( style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, parameterStyle=SOAPBinding.ParameterStyle.BARE)
注意: WebLogic Server 9.1以降では、XMLBeans 1.Xデータ型(つまり |
|
JAX-RPC |
name |
生成されたWARファイル( この属性のデフォルト値は、
|
いいえ |
両方 |
type |
生成するWebサービスのタイプ(JAX-WSまたはJAX-RPC)を指定します。 有効な値は以下のとおりです。
デフォルト値は |
いいえ |
両方 |
wsdlOnly |
このJWSファイルに対してWSDLファイルのみが生成されるように指定します。 注意: デプロイメント記述子やサービス・エンドポイント・インタフェースなどの他のアーティファクトは生成されませんが、Webサービス操作のパラメータと戻り値のデータ型を記述するXMLスキーマをWSDLに含める必要があるので、データ・バインディング・アーティファクトは生成されます。 WSDLは、 この属性を この属性の有効な値は、
|
いいえ |
両方 |
<module>
要素は、生成されたコードおよびアーティファクトが単一のWebアプリケーション(WAR)ファイルにパッケージ化されるように、1つまたは複数の<jws>
要素を一緒にグループ化します。<module>
要素は、メインのjwsc
Antタスクの子です。
同じバックエンド・コンポーネント(Javaクラスまたはステートレス・セッションEJB)を使用して実装されるWebサービスのみ、単一の<module>
要素の下でグループ化できます。デフォルトでは、jwsc
はWebサービスを常にプレーンJavaクラスとして実装します(JWSファイルにステートレス・セッションEJBを実装している場合のみ例外)。これは、<module>
の<jws>
子要素によって指定されたJWSファイルのいずれかがjavax.ejb.SessionBean
を実装する場合、その兄弟<jws>
ファイルでもjavax.ejb.SessionBean
を実装する必要があることを意味します。これが不可能な場合、すべてのJWSファイルを単一の<module>
の下でグループ化することはできません。
モジュール内のWebサービスは、同じcontextPath
を持つ必要がありますが、serviceURI
は一意である必要があります。共通のcontextPath
を設定するには、<module>
要素に対して属性として指定するか、各Webサービスの@WLXXXTransport
アノテーション(JAX-RPCの場合のみ)または<WLXXXTrasnsport>
要素がcontextPath
属性について同じ値を持つようにします。jwsc
Antタスクは、これらの値を確認し、一意でない場合にエラーを戻します。
<module>
の<jws>
子要素は、1つ以上指定する必要があります。
JAX-WS Webサービス、JAX-RPC Webサービスのいずれを生成する場合でも、<module>
子要素を使用できます。
この要素がjwsc
要素階層のどの場所にくるのかを視覚的に確認するには、図2-1を参照してください。この要素の使用例については、「例」を参照してください。
次の表では、<module>
要素の属性について説明します。
表2-6 jwsc Antタスクの<module>要素の属性
属性 | 説明 | 必須? | JAX-RPC/JAX-WS/両方 |
---|---|---|---|
contextPath |
このモジュールに含まれるすべてのWebサービスのコンテキスト・パス(コンテキスト・ルート)。 たとえば、WebLogic WebサービスのデプロイされたWSDLが次のとおりであるとします。 http://hostname:7001/financial/GetQuote?WSDL
この属性の値は、このモジュールに含まれるJWSファイルで設定されているその他のコンテキスト・パスをオーバーライドします。これには、 この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルが |
1つのWAR内の複数のWebサービスのコンテキスト・パスを同じにする場合にのみ必須です。「WebLogic Webサービスのコンテキスト・パスの定義」を参照してください。 |
両方 |
|
EJBベースのWebサービスを、JARファイルではなくWARファイルにパッケージ化するかどうかを指定します。この属性の有効な値は、 |
いいえ |
JAX-WS |
explode |
デプロイ可能なWebサービスを格納する生成済のWARファイルを、展開ディレクトリ形式にするかどうかを指定します。この属性の有効な値は、 |
いいえ |
両方 |
|
生成されたWARファイルにWSDLファイルを含めるかどうかを指定します。この属性の有効な値は、 |
いいえ |
JAX-WS |
name |
生成されたWARファイル( この属性のデフォルト値は |
いいえ |
両方 |
wsdlOnly |
注意: デプロイメント記述子やサービス・エンドポイント・インタフェースなどの他のアーティファクトは生成されませんが、Webサービス操作のパラメータと戻り値のデータ型を記述するXMLスキーマをWSDLに含める必要があるので、データ・バインディング・アーティファクトは生成されます。 WSDLは、 この属性を この属性の有効な値は、 |
いいえ |
両方 |
WLHttpTransport
要素では、HTTPトランスポートでWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクションと、生成されたWSDLのポート名を指定します。
<WLHttpTransport>
要素は<jws>
要素の子です。
<WLHttpTransport>
要素は、特定のJWSファイルに対して1つ指定できます。または、この要素は指定しなくても構いません。
この要素の指定時に従うガイドラインについては、「Webサービスの呼出しに使用されるトランスポートの指定」を参照してください。
JAX-WS Webサービス、JAX-RPC Webサービスのいずれを生成する場合でも、<WlHttpTransport>
子要素を使用できます。
この要素がjwsc
要素階層のどの場所にくるのかを視覚的に確認するには、図2-1を参照してください。この要素の使用例については、「例」を参照してください。
次の表では、<WLHttpTransport>
の属性について説明します。
表2-7 <jws>要素の<WLHttpTransport>子要素の属性
属性 | 説明 | 必須? | JAX-RPC/JAX-WS/両方 |
---|---|---|---|
contextPath |
Webサービスのコンテキスト・パス(コンテキスト・ルート)。 たとえば、WebLogic WebサービスのデプロイされたWSDLが次のとおりであるとします。 http://hostname:7001/financial/GetQuote?WSDL
この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルが |
いいえ |
両方 |
serviceUri |
URLのWebサービスURI部分。 たとえば、WebLogic WebサービスのデプロイされたWSDLが次のとおりであるとします。 http://hostname:7001/financial/GetQuote?WSDL
JAX-WSの場合、この属性のデフォルト値は JAX-RPCの場合、この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルが |
いいえ |
両方 |
portName |
生成されたWSDLのポートの名前。この属性は、WSDLの この属性のデフォルト値は、JWSファイルの |
いいえ |
両方 |
注意: <WLHttpsTransport> 要素はWebLogic Server 9.2以降では非推奨です。<WLHttpTransport> 要素がHTTPとHTTPSプロトコルを両方ともサポートするようになったため、これを使用してください。クライアント・アプリケーションにHTTPSプロトコルのみを使用してWebサービスにアクセスさせるには、JWSファイルで@weblogic.jws.security.UserDataConstraint JWSアノテーションを指定する必要があります。 |
WLHttpsTransport
要素では、セキュリティで保護されたHTTPSトランスポートでWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクションと、生成されたWSDLのポート名を指定します。
<WLHttpsTransport>
要素は<jws>
要素の子です。<WLHttpsTransport>
要素は、特定のJWSファイルに対して1つ指定できます(指定しなくても構いません)。<WlHttpsTransport>
子要素を使用できるのは、JAX-RPC Webサービスを生成する場合のみです。この要素の指定時に従うガイドラインについては、「Webサービスの呼出しに使用されるトランスポートの指定」を参照してください。
この要素がjwsc
要素階層のどの場所にくるのかを視覚的に確認するには、図2-1を参照してください。
次の表では、<WLHttpsTransport>
の属性について説明します。
表2-8 <jws>要素の<WLHttpsTransport>子要素の属性
属性 | 説明 | 必須? |
---|---|---|
contextPath |
Webサービスのコンテキスト・パス(コンテキスト・ルート)。 たとえば、WebLogic WebサービスのデプロイされたWSDLが次のとおりであるとします。 https://hostname:7001/financial/GetQuote?WSDL
この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルが |
いいえ |
serviceUri |
URLのWebサービスURI部分。 たとえば、WebLogic WebサービスのデプロイされたWSDLが次のとおりであるとします。 https://hostname:7001/financial/GetQuote?WSDL
JAX-WSの場合、このURI属性のデフォルト値は JAX-RPCの場合、この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルが |
いいえ |
portName |
生成されたWSDLのポートの名前。この属性は、WSDLの この属性のデフォルト値は、JWSファイルの |
いいえ |
注意: JAX-RPC Webサービスを生成する場合のみ、<WLJmsTransport> 子要素を使用できます。 |
WLJMSTransport
要素では、JMSトランスポートでWebサービスを呼び出すために使用するコンテキスト・パスおよびURLのサービスURIセクションと、生成されたWSDLのポート名を指定します。また、JMSトランスポート用に構成済のJMSキュー名および接続ファクトリ名も指定します。
<WLHJmsTransport>
要素は<jws>
要素の子です。<WLJmsTransport>
要素は、特定のJWSファイルに対して1つ指定できます。この要素の指定時に従うガイドラインについては、「Webサービスの呼出しに使用されるトランスポートの指定」を参照してください。
この要素がjwsc
要素階層のどの場所にくるのかを視覚的に確認するには、図2-1を参照してください。この要素の使用例については、「例」を参照してください。
次の表では、<WLJmsTransport>
の属性について説明します。
表2-9 <jws>要素の<WLJMSTransport>子要素の属性
属性 | 説明 | 必須? |
---|---|---|
contextPath |
Webサービスのコンテキスト・パス(コンテキスト・ルート)。 たとえば、WebLogic WebサービスのデプロイされたWSDLが次のとおりであるとします。 http://hostname:7001/financial/GetQuote?WSDL
この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルが |
いいえ |
serviceUri |
URLのWebサービスURI部分。 たとえば、WebLogic WebサービスのデプロイされたWSDLが次のとおりであるとします。 http://hostname:7001/financial/GetQuote?WSDL
JAX-WSの場合、この属性のデフォルト値は JAX-RPCの場合、この属性のデフォルト値はJWSファイルの名前(拡張子なし)です。たとえば、JWSファイルが |
いいえ |
portName |
生成されたWSDLのポートの名前。この属性は、WSDLの この属性のデフォルト値は、JWSファイルの |
いいえ |
queue |
JMSトランスポート用に構成済のJMSキューのJNDI名。JMSトランスポートの使用の詳細は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』の接続プロトコルとしてのJMSトランスポートの使用に関する項を参照してください。 この属性を指定しない場合のデフォルト値は |
いいえ |
connectionFactory |
JMSトランスポート用に構成済みのJMS接続ファクトリのJNDI名。 この属性のデフォルト値は、WebLogic ServerインスタンスのデフォルトのJMS接続ファクトリです。 |
いいえ |
JWSファイル自体で別のWebサービスを呼び出し、jwsc
Antタスクで、必要なクライアント側アーティファクトを自動的に生成およびコンパイルし、それらをWebサービスと一緒にWebアプリケーションWARファイルにパッケージ化する場合、<clientgen>
要素を使用します。クライアント側アーティファクトには、次のものが含まれます。
呼出しの対象となる特定のWebサービスに対するStub
およびService
インタフェース実装のJavaクラス。
WSDLファイルで指定されたユーザー定義XMLスキーマ・データ型のJavaクラス。
JAX-RPCの場合、Javaのユーザー定義のデータ型と、WSDLファイル内で指定されたそのデータ型に対応するXMLスキーマ型の間のマッピングに関する情報を格納するJAX-RPCマッピング・デプロイメント記述子ファイル。
この要素がjwsc
要素階層のどの場所にくるのかを視覚的に確認するには、図2-1を参照してください。この要素の使用例については、「例」を参照してください。
標準のAnt <sysproperty>
子要素を使用して、クライアント側アーティファクトの生成元Webサービスで必要となるプロパティを指定できます。たとえば、Webサービスが保護される場合、javax.xml.rpc.security.auth.username|password
プロパティを使用して、認証されたユーザー名およびパスワードを設定できます。<sysproperty>
の詳細は、java
Antタスクに関するAntのドキュメント(http://ant.apache.org/manual/
)を参照してください。
JAX-WS Webサービス、JAX-RPC Webサービスのいずれを生成する場合でも、<clientgen>
子要素を使用できます。
次の表では、<clientgen>
要素の属性について説明します。
表2-10 <clientgen>要素の属性
属性 | 説明 | 必須? | JAX-RPC/JAX-WS/両方 |
---|---|---|---|
autoDetectWrapped |
WSDLファイルを解析してクライアント・スタブを作成する場合、 この属性の有効な値は、 |
いいえ |
JAX-RPC |
|
外部XMLカタログ・ファイルを指定します。XMLカタログ・ファイルの作成の詳細は、『Oracle WebLogic Server JAX-WS Webサービスの高度な機能のプログラミング』のXMLカタログの使用に関する項を参照してください。 |
いいえ |
JAX-WS |
handlerChainFile |
JWSファイルがWebサービスを呼び出すときに実行されるクライアント側SOAPメッセージ・ハンドラを記述するXMLファイルの名前を指定します。 ファイルで指定された各ハンドラは、以下のタイミングで2回実行されます。
この属性を指定しなかった場合、WebサービスがJWSファイルから呼び出されるとき、クライアント側のハンドラはCLASSPATHにあっても実行されません。 クライアント側SOAPメッセージ・ハンドラの作成の詳細および例は、『Oracle WebLogic Server JAX-RPC Webサービスの高度な機能のプログラミング』のクライアント側のSOAPメッセージ・ハンドラの作成と使用に関する項を参照してください。 |
いいえ |
JAX-RPC |
generateAsyncMethods |
たとえば、 注意: JWSファイル内で呼び出されるWebサービス操作が一方向としてマークされている場合、 この属性の有効な値は、 |
いいえ |
JAX-RPC |
generatePolicyMethods |
この属性の有効な値は、 詳細は、『Oracle WebLogic Server WebLogic Webサービスの保護』のクライアント側セキュリティWS-Policyファイルの使用に関する項を参照してください。 |
いいえ |
JAX-RPC |
includeGlobalTypes |
この属性の有効な値は、 |
いいえ |
JAX-RPC |
jaxRPCWrappedArrayStyle |
この属性の有効な値は、 |
いいえ |
JAX-RPC |
packageName |
生成されたクライアント・インタフェースとスタブ・ファイルをパッケージ化するパッケージ名。 パッケージ名には小文字を使用することが推奨されます。 |
はい |
両方 |
serviceName |
対応するクライアント側アーティファクトが生成されるWSDLファイル内のWebサービスの名前。 Webサービス名はWSDLファイル内の この名前は、生成されたJAX-RPCマッピング・ファイル、およびWSDLファイルのクライアント側のコピーで使用されます。たとえば、 |
この属性は、WSDLファイルに複数の この属性を指定しておらず、1つまたは複数の |
JAX-RPC |
wsdl |
クライアント・アーティファクトの生成が必要な(WebLogicまたは非WebLogic)Webサービスを記述するWSDLのフルパス名またはURL。 生成されたスタブ・ファクトリ・クラスは、デフォルト・コンストラクタ内のこの属性の値を使用します。 |
はい |
両方 |
<descriptor>
要素は、Webサービスの実装を格納するWARを生成する際に新しいWebアプリケーション・デプロイメント記述子を作成するのではなく、jwsc
タスクが既存のファイルをコピーし、それらを新しい情報で更新することを指定するために使用します。これは、1つ以上のWebサービスの追加対象となる既存のWebアプリケーションがある場合に有効です。通常、この要素は、標準の<FileSet>
Antタスクと一緒に使用し、HTMLファイルおよびJavaクラスなど、その他の既存のWebアプリケーション・アーティファクトをjwsc
生成のWebアプリケーションにコピーします。
この要素と一緒に使用できるデプロイメント記述子ファイルは次の2つのみです。
web.xml
weblogic.xml
各デプロイメント記述子ファイルには、個別の<descriptor>
要素を使用します。
<descriptor>
要素は、<module>
または<jws>
(後者がメインのjwsc
Antタスクの直接の子である場合)の子です。
注意: <descriptor> 要素で指定される既存のweb.xml およびweblogic.xml ファイルは、検証エラーでjwsc Antタスクが失敗するDTDベースではなく、XMLスキーマ・ベースである必要があります。 |
JAX-RPC Webサービスを生成する場合のみ、<descriptor>
子要素を使用できます。この要素がjwsc
要素階層のどの場所にくるのかを視覚的に確認するには、図2-1を参照してください。この要素の使用例については、「例」を参照してください。
次の表では、<descriptor>
要素の属性について説明します。
<module>
の<jwsfileset>
子要素として使用し、jwsc
Antタスクが、コンパイルするJWSファイルを検索する1つまたは複数のディレクトリを指定します。jwsc
が検出したJWSファイルのリストは、あたかも、各ファイルが<module>
の<jws>
子要素で個別に指定されていたかのように処理されます。
検索を絞り込むには、<FileSet>
Antタスクの標準のネストされた要素を使用します。たとえば、リストに含めるJWSファイルを判別する際に、<jwsfileset>
が従うべきパターン・マッチングを指定するには、<include>
要素を使用します。<FileSet>
の詳細およびこれらのネストされた要素http://ant.apache.org/manual/
にあるAntのドキュメントを参照してください。
JAX-WS Webサービス、JAX-RPC Webサービスのいずれを生成する場合でも、<jwsfileset>
子要素を使用できます。
この要素がjwsc
要素階層のどの場所にくるのかを視覚的に確認するには、図2-1を参照してください。この要素の使用例については、「例」を参照してください。
次の表では、<jwsfileset>
要素の属性について説明します。
<binding>
子要素は、次のいずれかを指定するために使用します。
JAX-WSおよびJAXBカスタム・バインディング宣言を指定する1つ以上のカスタマイズ・ファイル(JAX-WSの場合)。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のバインディング宣言を使用したXML Schema-to-Javaマッピングのカスタマイズに関する項を参照してください。
JAX-RPCの場合、1つ以上のXMLBeans構成ファイル(慣例により、.xsdconfig
で終わります)。Webサービスで、パラメータまたは戻り値としてApache XMLBeans(http://xmlbeans.apache.org/
)データ型を使用している場合、この要素を使用します。
<binding>
要素は、標準のAnt <Fileset>
要素に似ており、同じ属性をすべて持ちます。指定可能な属性の完全なリストの詳細は、http://ant.apache.org/manual/Types/fileset.html
にある、Fileset要素に関するApache Antのドキュメントを参照してください。
注意: <binding> 子要素は、<jws> 要素のcompliedWsdl 属性を指定した場合は無効になります。
|
wsdlc
Antタスクは、既存のWSDLファイルを基に、WSDLファイルで記述されたWebサービスの部分的なJava実装を提供する一連のアーティファクトを生成します。type
属性を指定することで、JAX-WSまたはJAX-RPCのいずれかに基づいた部分的な実装を生成できます。
デフォルトでは、wsdlc
Antタスクがアーティファクトを生成する元となる<service>
要素が1つのみWSDLファイルに含まれるものとされます。ただし、srcServiceName
属性を使用して、複数の<service>
要素がWSDLファイル内に存在する場合に特定のWebサービスを指定するか、srcPortName
属性を使用して、複数の<port>
子要素が特定のWebサービスに対して存在する場合にWebサービスの特定のポートを指定することができます。
wsdlc
Antタスクによって、次のアーティファクトが生成されます。
WSDLファイルで記述されたWebサービスを実装するJWSインタフェース・ファイル(サービス・エンドポイント・インタフェース)。インタフェースには、Webサービス操作を実装する詳細なメソッド・シグネチャ、およびWebサービスのその他の側面を実装するJWSアノテーション(@WebService
や@SOAPBinding
など)が含まれます。このファイルは変更しないでください。
Webサービスのパラメータと戻り値をXML表現とJava表現の間で変換するために、WebLogic Serverによって使用されるデータ・バインディング・アーティファクト。データ型のXMLスキーマはWSDLで指定され、Java表現はwsdlc
Antタスクで生成されます。このファイルは変更しないでください。
生成されたJWSインタフェースの不完全な(途中まで作成済みの)実装を格納したJWSファイル。このファイルを修正してビジネス・コードを追加する必要があります。
(オプション)生成されるJWSインタフェースのJavadoc。
wsdlc
Antタスクを実行(通常は1回のみ)したら、メソッドをビジネス要件どおりに実行するためにそのメソッドにJavaコードを追加するなどして、生成されたJWS実装ファイルを更新します。wsdlc
Antタスクは、WSDLファイルを基にWebサービスの形式を認識していますが、そのWebサービスをどのように実行するかについては認識していないので、最初は生成されたJWS実装ファイルにビジネス・ロジックは含まれていません。
JWS実装ファイルを記述するときに、JWSアノテーションを追加することもできます。ただし、以下の規則に従う必要があります。
JWS実装ファイルに含めることができる標準JSR-181 JWSアノテーションは、@WebService
、@HandlerChain
、@SOAPMessageHandler
、および@SOAPMessageHandlers
のみです。他のJWS-181 JWSアノテーションを指定した場合、JWSファイルをWebサービスにコンパイルしようとすると、jwsc
Antタスクはエラーを戻します。
weblogic.jws.Policy
アノテーションまたはweblogic.jws.Policies
アノテーションを使用して、JWS実装ファイル内のWebサービスにポリシーをアタッチできません。
WSDLでポリシーがまだ定義されていない場合は、管理コンソールを使用してデプロイされたWebサービスにポリシーをアタッチできます。
また、@WebServiceアノテーションで指定できるのは、serviceName
属性とendpointInterface
属性のみ。まれに、WSDLファイルに複数の
<service>
要素が指定されていることがあります。その場合は、serviceName
属性を使用して、wsdlc
Antタスクで使用していたものとは別の<service>
WSDL要素を指定します。wsdlc
Antタスクで生成されたJWSインタフェースを指定するには、endpointInterface
属性を使用します。
JAX-RPC Webサービスに対しては、必要に応じてWebLogic固有のJWSアノテーションを指定できます。JAX-WS Webサービスでは、WebLogic固有のJWSアノテーションは使用できません。
JAX-WSに対して、必要に応じて、JAX-WS (http://jax-ws.java.net
の224)、JAXB (http://jcp.org/en/jsr/detail?id=222
のJSR 222)またはCommon (http://jcp.org/en/jsr/detail?id=250
のJSR 250)アノテーションを指定できます。
JWSファイルにビジネス・ロジックを追加したら、jwsc
Antタスクを実行して、Webサービスの完全なJava実装を生成します。jwsc
のcompiledWsdl
属性を使用すると、JWSインタフェース・ファイルとデータ・バインディング・アーティファクトを格納するwsdlc
Antタスクで生成されたJARファイルを指定できます。この属性を指定すると、jwsc
Antタスクは、新しいWSDLファイルを生成せず、JARファイル内の既存のWSDLファイルを使用します。そのため、Webサービスをデプロイして、そのWSDLを表示すると、デプロイされたWSDLは、ユーザーが最初に開始した時点のWSDLとほとんど変わらないように見えます。
注意: オリジナルのWSDLとデプロイされたWSDLの違いは、おそらくWebサービスのポートの<address> 要素のlocation 属性の値です。デプロイされたWSDLは、デプロイされたWebサービスの実際のホスト名とURIを指定しますが、これはほぼ間違いなくオリジナルのWSDLの値とは違います。この違いは、静的WSDLを基に実際のWebサービスをデプロイする際に現れると予想されます。 |
以下のガイドラインで説明するように、生成される複合データ型のJavaパッケージ名は、生成される部分的な実装のタイプ(JAX-WSまたはJAX-RPC)に応じて異なります。
JAX-WSの場合は、packageName
属性を指定すると、すべてのアーティファクト(Java複合データ型、JWSインタフェース、JWSインタフェース実装)がこのパッケージに生成されます。この場合に、生成されるJava複合データ型のパッケージ名を変更するには、wsdlc
Antタスクの<binding
子要素を使用してカスタム・バインディング宣言ファイルを指定します。カスタム・バインディング宣言ファイルの作成については、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のJAXBデータ・バインディングの使用に関する項を参照してください。
JAX-RPCの場合は、wsdlc
AntタスクのpackageName
属性を指定すると、生成されるJWSインタフェースおよび実装のみがこのパッケージに含まれます。ただし、生成されるJava複合データ型のパッケージ名は、packageName
属性を指定しているかどうかに関係なく、常にXSDスキーマ型のネームスペースに対応します。
jwsc
と組み合せたwsdlc
Antタスクの完全な使用例については、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のWSDLファイルからのWebサービスの作成に関する項を参照してください。
以下の項では、wsdlc
に関するその他の重要な情報について説明します。
<taskdef name="wsdlc" classname="weblogic.wsee.tools.anttasks.WsdlcTask"/>
次のAnt build.xml
ファイルの一部では、wsdlc
とjwsc
の2つのAntタスクを組み合せてWebLogic Webサービスをビルドする方法を示します。ビルド・ファイルには、既存のWSDLファイルに対してwsdlc
Antタスクを実行するgenerate-from-wsdl
、およびwsdlc
Antタスクで生成されたアーティファクトからデプロイ可能なWebサービスをビルドするためにjwsc
Antタスクを実行するbuild-service
という2種類のターゲットが指定されています。
<taskdef name="wsdlc" classname="weblogic.wsee.tools.anttasks.WsdlcTask"/> <taskdef name="jwsc" classname="weblogic.wsee.tools.anttasks.JwscTask" /> <target name="generate-from-wsdl"> <wsdlc srcWsdl="wsdl_files/TemperatureService.wsdl" destJwsDir="output/compiledWsdl" destImplDir="output/impl" packageName="examples.webservices.wsdlc" type="JAXWS" /> </target> <target name="build-service"> <jwsc srcdir="src" destdir="output/wsdlcEar"> <jws file= "examples/webservices/wsdlc/TemperatureService_TemperaturePortTypeImpl.java" compiledWsdl="output/compiledWsdl/TemperatureService_wsdl.jar" type="JAXWS"/> </jwsc> </target>
この例では、wsdlc
Antタスクは、TemperatureService.wsdl
ファイルを入力として取り、JWSインタフェースとデータ・バインディング・アーティファクトが格納されたJARファイルをoutput/compiledWsdl
ディレクトリに生成します。JARファイル名はTemperatureService_wsdl.jar
です。このAntタスクでは、途中まで作成済みのJWSインタフェースの実装を格納したJWSファイルをoutput/impl/examples/webservices/wsdlc
ディレクトリ(destImplDir
属性の値と、指定したpackageName
に対応するディレクトリ階層を組み合せたもの)に生成します。
JAX-WSの場合、途中まで作成済みのJWS実装ファイルの名前は、WSDLファイルの<service>
要素とその内部の<port>
要素の名前に基づきます。たとえば、サービス名がTemperatureService
で、ポート名がTemperaturePortType
の場合、生成されたJWS実装ファイルの名前はTemperatureService_TemperaturePortTypeImpl.java
となります。
JAX-RPCの場合、途中まで作成済みのJWS実装ファイルの名前は、最初の<service>
要素に対応する<portType>
要素の名前に基づきます。たとえば、portType
の名前がTemperaturePortType
の場合、生成されたJWS実装ファイルはTemperaturePortTypeImpl.java
という名前になります。
wsdlc
を実行したら、途中まで作成済みのJWS実装ファイルにビジネス・ロジックを追加します。通常、このJWSファイルをwsdlc
出力ディレクトリから、アプリケーションのソース・コードを含む、より永続的なディレクトリに移動します。この例では、詳細に記述されたTemperatureService_TemperaturePortTypeImpl.java
JWSファイルはsrc/examples/webservices/wsdlc/
ディレクトリに移動しています。次に、jwsc
Antタスクを実行し、このJWSファイルを通常通りに指定します。ここで指定する必要がある唯一の追加属性がcompiledWsdl
です。この属性は、上記の例で示すようにwsdlc
Antタスクで生成されたJARファイルを指します。これは、JARファイルにコンパイルされているオリジナルのWSDLファイルを使用するので、jwsc
AntタスクでWSDLファイルを生成しないことを示します。
wsdlc
Antタスクには、次のWebLogic固有の子要素があります。
wsdlc
Antタスクで設定可能な、標準のAnt javac
タスクに関連する要素のリストについては、「 wsdlcに適用される標準のAnt javac属性」を参照してください。
<binding>
子要素は、次のいずれかを指定するために使用します。
JAX-WSおよびJAXBカスタム・バインディング宣言を指定する1つ以上のカスタマイズ・ファイル(JAX-WSの場合)。詳細は、『Oracle WebLogic Server JAX-WS Webサービス・スタート・ガイド』のバインディング宣言を使用したXML Schema-to-Javaマッピングのカスタマイズに関する項を参照してください。
JAX-RPCの場合、1つ以上のXMLBeans構成ファイル(慣例により、.xsdconfig
で終わります)。Webサービスで、パラメータまたは戻り値としてApache XMLBeans(http://xmlbeans.apache.org/
)データ型を使用している場合、この要素を使用します。
<binding>
要素は、標準のAnt <Fileset>
要素に似ており、同じ属性をすべて持ちます。指定可能な属性の完全なリストの詳細は、http://ant.apache.org/manual/Types/fileset.html
にある、Fileset要素に関するApache Antのドキュメントを参照してください。
注意: <binding> 要素は、WebLogic Server 10.0から非推奨になった<xsdConfig> 要素にかわるものです。 |
<xmlcatalog>
子要素には、組込みXMLカタログのIDを指定します。要素の構文は次のとおりです。
<xmlcatalog refid="id"/>
<xmlcatalog>
によって参照されるIDは、組込みXMLカタログのIDと一致していなければなりません。build.xml
ファイルにXMLカタログを組み込むには、次の構文を使用します。
<xmlcatalog id="id"> <entity publicid="public_id" location="uri"/> </xmlcatalog>
上の構文で、public_id
には元のXMLリソース(WSDLまたはXSD)のパブリックIDを指定し、uri
には代替XMLリソースを指定します。
以下の例は、XMLカタログを組み込んでwsdlc
を使用して参照する方法を示しています。関連するコード行は太字で示しています。
<target name="wsdlc">
<wsdlc
srcWsdl="wsdl_files/TemperatureService.wsdl"
destJwsDir="output/compiledWsdl"
destImplDir="output/impl"
packageName="examples.webservices.wsdlc"
<xmlcatalog refid="wsimportcatalog"/>
</wsdlc>
</target>
<xmlcatalog id="wsimportcatalog">
<entity publicid="http://helloservice.org/types/HelloTypes.xsd"
location="${basedir}/HelloTypes.xsd"/>
</xmlcatalog>
詳細は、『Oracle WebLogic Server JAX-WS Webサービスの高度な機能のプログラミング』のXMLカタログの使用に関する項を参照してください。
次の表では、wsdlc
Antタスクの属性について説明します。wsdlc
Antタスクで設定可能な、標準のAnt javac
タスクに関連する属性のリストについては、「wsdlcに適用される標準のAnt javac属性」を参照してください。
次の表では、WebLogic固有のwsdlc属性について説明します。
表2-13 wsdlc AntタスクのWebLogic固有の属性
属性 | 説明 | データ型 | 必須? | JAX-RPC/JAX-WS/両方 |
---|---|---|---|---|
autoDetectWrapped |
WSDLファイルを解析して、Webサービスを実装する部分的なJWSファイルを作成する場合、 この属性の有効な値は、 |
ブール |
いいえ |
JAX-RPC |
catalog |
外部XMLカタログ・ファイルを指定します。XMLカタログ・ファイルの作成の詳細は、『Oracle WebLogic Server JAX-WS Webサービスの高度な機能のプログラミング』のXMLカタログの使用に関する項を参照してください。 |
String |
いいえ |
両方 |
destImplDir |
途中まで作成済みのJWS実装ファイルの生成先となるディレクトリ。 生成されたJWSファイルは、生成されたJWSインタフェース・ファイル(JARファイル内に格納)を実装します。メソッドを目的どおりに実行するようにそのメソッドにJavaコードを追加して、このJWS実装ファイルを更新し、後で |
String |
いいえ |
両方 |
destJavadocDir |
JWSインタフェースを記述するJavadocの生成先となるディレクトリ。 指定したWebサービスを実装するJWSインタフェース・ファイルを格納した、生成されたJARファイルを展開または更新することはできないので、生成されたこのJavadocからインタフェース・ファイルの詳細を入手してください。途中まで作成済のJWS実装ファイルとともにこのドキュメントを使用すると、部分的に生成されているWebサービスにビジネス・ロジックを追加できます。 |
String |
いいえ |
両方 |
destJwsDir |
JWSインタフェース・ファイルおよびデータ・バインディング・アーティファクトを格納するJARファイルの生成先となるディレクトリ。 生成されるJARファイルの名前は |
String |
はい |
両方 |
explode |
生成されたJWSインタフェース・ファイルおよびデータ・バインディング・アーティファクトを格納する生成済みのJARファイルを、展開ディレクトリ形式にするかどうかを指定します。 この属性の有効な値は、 |
ブール |
いいえ |
両方 |
jaxRPCWrappedArrayStyle |
この属性の有効な値は、 |
ブール |
いいえ |
JAX-RPC |
packageName |
生成されたJWSインタフェースおよび実装ファイルの生成先となるパッケージ。 この属性を指定しない場合、 |
String |
いいえ |
両方 |
|
XSDファイルでは、名前付きのグローバル型と名前なしのローカル型の2つの複合型が定義されています。デフォルトでは、 有効にすると、 |
ブール |
いいえ |
JAX-RPC |
srcBindingName |
JWSインタフェース・ファイルの生成元になるWSDLバインディングの名前。
バインディングのネームスペースがサービスのネームスペースと同じであれば、この属性の値にはバインディングの名前を指定するだけですみます。例: srcBindingName="MyBinding" ただし、バインディングのネームスペースがサービスのネームスペースとは異なる場合、以下の形式でネームスペースURIも指定する必要があります。 srcBindingName="{URI}BindingName" たとえば、 srcBindingName="{www.examples.org}MyBinding" 注意:この属性はWebLogic Server 9.2では非推奨です。かわりに |
String |
WSDLファイルに複数の |
JAX-RPC |
srcPortName |
JWSインタフェース・ファイルの生成元になるWSDLポートの名前。 この属性の値は、JWSインタフェース・ファイルの生成対象のWebサービス・ポートに対応する この属性を指定しない場合、 注意: JAX-RPCのために、この属性を指定した場合、 |
String |
いいえ |
両方 |
srcServiceName |
JWSインタフェース・ファイルの生成元になるWebサービスの名前。 この属性の値は、JWSインタフェース・ファイルの生成対象のWebサービスに対応する
この属性または 注意: JAX-RPCに対して、この属性を指定した場合、 |
String |
いいえ |
両方 |
srcWsdl |
JWSインタフェースとデータ・バインディング・アーティファクトを格納するJARファイルの生成に使用するWSDLファイルの名前。 名前は、パス名(絶対パスまたはAnt |
String |
はい |
両方 |
type |
部分的な実装の生成対象であるWebサービスのタイプ(JAX-WSまたはJAX-RPC)を指定します。 有効な値は以下のとおりです。
デフォルト値は |
String |
いいえ |
両方 |
typeFamily |
生成するデータ・バインディング・クラスのタイプを指定します。 有効な値は以下のとおりです。
デフォルト値は 注意: JAXBデータ・バインディング・クラスは、常にJAX-WS Webサービスに対して生成されます。 |
String |
いいえ |
JAX-RPC |
wlw81CallbackGen |
WebLogic Workshop 8.1形式のコールバックを生成するかどうかを指定します。 この属性の有効な値は、 |
ブール |
いいえ |
JAX-RPC |
WebLogic固有のwsdlc
属性の他に、次に示す標準javac
属性も定義できます。各属性の詳細は、http://ant.apache.org/manual/
にあるAntのドキュメントを参照してください。
bootclasspath
bootClasspathRef
classpath
classpathRef
compiler
debug
debugLevel
depend
deprecation
destdir
encoding
extdirs
failonerror
fork
includeantruntime
includejavaruntime
listfiles
memoryInitialSize
memoryMaximumSize
nowarn
optimize
proceed
source
sourcepath
sourcepathRef
tempdir
verbose
wsdlc
Antタスクでは、次の標準Ant子要素も使用できます。
<FileSet>
<SourcePath>
<Classpath>
<Extdirs>
wsdlget
Antタスクは、WSDLとそのインポートされたXMLリソースをローカル・ディレクトリにダウンロードします。
ダウンロード・ファイルは、アプリケーションのリモートXMLリソースをローカル・バージョンのリソースにリダイレクトするようにXMLカタログを定義し、そのカタログを参照する場合に使用することができます。XMLカタログの使用の詳細は、『Oracle WebLogic Server JAX-WS Webサービスの高度な機能のプログラミング』のXMLカタログの使用に関する項を参照してください。
以下の項では、wsdlget
に関するその他の重要な情報について説明します。
<taskdef name="wsdlget" classname="weblogic.wsee.tools.anttasks.WsdlGetTask"/>
次のAnt build.xml
ファイルの抜粋は、wsdlget
Antタスクを使用してWSDLとそのインポートされたXMLリソースをダウンロードする方法を示しています。XMLリソースは、Antタスクが実行されるディレクトリ内のwsdl
フォルダに保存されます。
<target name="wsdlget" <wsdlget wsdl="http://host/service?wsdl" destDir="./wsdl/" /> </target>
wsdlget
Antタスクには、<xmlcatalog>
というweblogic固有の子要素があります。<xmlcatalog>
子要素には、組込みXMLカタログのIDを指定します。要素の構文は次のとおりです。
<xmlcatalog refid="id"/>
<xmlcatalog>
によって参照されるIDは、組込みXMLカタログのIDと一致していなければなりません。build.xml
ファイルにXMLカタログを組み込むには、次の構文を使用します。
<xmlcatalog id="id"> <entity publicid="public_id" location="uri"/> </xmlcatalog>
上の構文で、public_id
には元のXMLリソース(WSDLまたはXSD)のパブリックIDを指定し、uri
には置換XMLリソースを指定します。
以下の例は、XMLカタログを組み込んでwsdlget
を使用して参照する方法を示しています。関連するコード行は太字で示しています。
<target name="wsdlget">
<wsdlget
wsdl="${wsdl}"
destDir="${wsdl.dir}"
catalog="wsdlcatalog.xml"/>
<xmlcatalog refid="wsimportcatalog"/>
</wsdlget>
</target>
<xmlcatalog id="wsimportcatalog">
<entity publicid="http://helloservice.org/types/HelloTypes.xsd"
location="${basedir}/HelloTypes.xsd"/>
</xmlcatalog>
詳細は、『Oracle WebLogic Server JAX-WS Webサービスの高度な機能のプログラミング』のXMLカタログの使用に関する項を参照してください。
次の表では、wsdlget
Antタスクの属性について説明します。
表2-14 wsdlget AntタスクのWebLogic固有の属性
属性 | 説明 | データ型 | 必須? | JAX-RPC/JAX-WS/両方 |
---|---|---|---|---|
catalog |
外部XMLカタログ・ファイルを指定します。XMLカタログ・ファイルの作成の詳細は、『Oracle WebLogic Server JAX-WS Webサービスの高度な機能のプログラミング』のXMLカタログの使用に関する項を参照してください。 |
String |
いいえ |
両方 |
destDir |
XMLリソースのコピー先のディレクトリ。 生成されたJWSファイルは、生成されたJWSインタフェース・ファイル(JARファイル内に格納)を実装します。メソッドを目的どおりに実行するようにそのメソッドにJavaコードを追加して、このJWS実装ファイルを更新し、後で |
String |
はい |
両方 |
wsdl |
ローカル・ディレクトリにコピーするWSDLの名前。 |
String |
いいえ |
両方 |