Oracle® Fusion Middleware Oracle WebLogic Server Web サービス リファレンス 11g リリース 1 (10.3.1) B55558-01 |
|
戻る |
次へ |
以下の節では、WebLogic Web サービス Ant タスクに関するリファレンス情報を提供します。
デプロイメント環境に上記の Ant タスクを統合し、デプロイメント環境でこれらの Ant タスクを使用して、Web サービスおよび Web サービスを呼び出すクライアント アプリケーションをプログラミングする方法については、以下の章を参照してください。
『Oracle Fusion Middleware JAX-WS を使用した Oracle WebLogic Server Web サービス入門』
『Oracle Fusion Middleware JAX-RPC を使用した Oracle WebLogic Server 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 Fusion Middleware JAX-WS を使用した Oracle WebLogic Server Web サービス入門』の「バインディング宣言を使用した XML Schema-to-Java マッピングのカスタマイズ」を参照してください。
SOAP ハンドラ ファイル。詳細については、『Oracle Fusion Middleware JAX-WS を使用した WebLogic Web サービス プログラマーズ ガイド』の「SOAP メッセージ ハンドラの作成と使用」を参照してください。
1 つまたは複数の XMLBeans コンフィグレーション ファイル (通常、.xsdconfig
で終わる) (JAX-RPC の場合)。Web サービスで、パラメータまたは戻り値として「http://xmlbeans.apache.org/
」データ型にある Apache XMLBeans を使用している場合、この要素を使用します。
<binding>
要素は、標準の Ant <Fileset>
要素に似ており、同じ属性をすべて持ちます。指定可能な属性の完全なリストについては、http://ant.apache.org/manual/CoreTypes/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 Fusion Middleware JAX-WS を使用した WebLogic 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 Fusion Middleware JAX-WS を使用した WebLogic Web サービス プログラマーズ ガイド』の「XML カタログの使用」を参照。 |
文字列 |
省略可能 |
JAX-WS |
destDir |
この属性は、任意のディレクトリに設定できる。ただし、EJB、JSP、または別の Web サービスから Web サービスを呼び出すクライアント コンポーネント ファイルを生成する場合、この属性は通常、共有クラスを保持する Java EE コンポーネントのディレクトリ (たとえば、EJB の場合は |
文字列 |
|
両方 |
destFile |
JAR ファイルを作成または更新するには、 存在しない JAR ファイルまたはディレクトリを指定すると、 |
文字列 |
|
両方 |
failonerror |
この属性の有効な値は、 |
ブール |
省略可能 |
両方 |
generateAsyncMethods |
たとえば、 注意 : Web サービス オペレーションが一方向としてマークされている場合、 この属性の有効な値は、 |
ブール |
省略可能 |
JAX-RPC |
generatePolicyMethods |
この属性の有効な値は、 詳細については、『Oracle Fusion Middleware JAX-WS を使用した WebLogic Web サービス プログラマーズ ガイド』の「クライアントサイド セキュリティ WS-Policy ファイルの使用」を参照。 |
Boolean |
省略可能 |
JAX-RPC |
getRuntimeCatalog |
|
Boolean |
省略可能 |
JAX-WS |
handlerChainFile |
クライアント アプリケーションが Web サービスを呼び出すときに実行されるクライアントサイド SOAP メッセージ ハンドラを記述する XML ファイルの名前を指定する。 ファイルで指定された各ハンドラは、以下のタイミングで 2 回実行される。
この クライアントサイドの SOAP メッセージ ハンドラの作成の詳細および例については、『Oracle Fusion Middleware JAX-RPC を使用した WebLogic Web サービス プログラマーズ ガイド』の「クライアントサイドの SOAP メッセージ ハンドラの作成と使用」を参照。 |
String |
省略可能 |
JAX-RPC |
includeGlobalTypes |
この属性の有効な値は、 |
ブール |
省略可能 |
JAX-RPC |
jaxRPCWrappedArrayStyle |
この属性の有効な値は、 |
ブール |
省略可能 |
JAX-RPC |
packageName |
生成されたクライアント インタフェースとスタブ ファイルをパッケージ化するパッケージ名。 この属性を指定しない場合、 この属性を指定しなかった場合、パッケージ名にはすべて小文字を使用することを推奨。 |
String |
省略可能 |
両方 |
serviceName |
対応するクライアント コンポーネント ファイルが生成される WSDL ファイル内の Web サービスの名前。 Web サービス名は WSDL ファイル内の この名前は、生成されたマッピング ファイル、および WSDL ファイルのクライアントサイドのコピーで使用される。たとえば、 |
文字列 |
この属性は、WSDL ファイルに複数の この属性を指定しておらず、1 つまたは複数の |
JAX-RPC |
type |
クライアント アーティファクトの生成対象である Web サービスのタイプ (JAX-WS または JAX-RPC) を指定する。 有効な値は以下のとおり。
デフォルト値は |
文字列 |
省略可能 |
両方 |
wsdl |
クライアント コンポーネント ファイルの生成が必要な (WebLogic または非 WebLogic) Web サービスを記述する WSDL の絶対パス名または URL。 クライアント JAR ファイル内の生成されたスタブ ファクトリ クラスは、デフォルト コンストラクタ内のこの属性の値を使用する。 |
文字列 |
必須 |
両方 |
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 タスクの「http://ant.apache.org/manual/
」にある Ant のマニュアルを参照してください。
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 クラスを示す)などのhttp://www.jcp.org/en/jsr/detail?id=109
にある JSR-109 Web Service クラス ファイル。
JAXB データ バインディング アーティファクト クラス ファイル。
必要な全デプロイメント記述子。以下を含みます。
サーブレット ベースの Web サービス デプロイメント記述子ファイル (web.xml
)。
Ear デプロイメント記述子ファイル application.xml
および weblogic-application.xml
。
注意 : JAX-WS Web サービスの場合、以下の点に注意してください。
|
JAX-RPC Web サービスの生成されたアーティファクトには以下のものがあります。
サービス エンドポイント インタフェース (JWS_ClassName
PortType.java
、JWS_ClassName
は JWS クラスを示す) などのhttp://www.jcp.org/en/jsr/detail?id=175
にある JSR-109 Web Service クラス ファイル。
必要な全デプロイメント記述子。以下を含めることができます。
標準および 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 Fusion Middleware JAX-WS を使用した Oracle WebLogic Server 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 サービスに対して同じコンテキスト パスを指定することもできます。各 JWS ファイルを個別の WAR ファイルにパッケージ化した場合、各サービスもユニークなコンテキスト パスを持つ必要があります。
<module>
要素を使用する場合、<jws>
を使って各 JWS ファイルを個別にリストするよりは、<jwsfileset>
子要素を使うと、1 つまたは複数のディレクトリ内の JWS ファイルのリストを検索できます。
以下の節では、jwsc
に関するその他の重要な情報について説明します。
<jws>
要素には、Web サービスの呼び出しに使用する転送方法 (HTTP/S または JMS) を指定するための、次に示す子要素 (省略可能) があります。
WLHttpTransport - 生成された WSDL のポート名に加え、HTTP/S 転送形式で Web サービスを呼び出すために使用するコンテキスト パスおよび URL のサービス URI セクションを指定します。
WLJMSTransport - 生成された WSDL のポート名に加え、JMS 転送形式で Web サービスを呼び出すために使用するコンテキスト パスおよび URL のサービス URI セクションを指定します。また、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 ファイルを記述している時点では、どの転送形式が JWS ファイルのニーズに適しているかを判別できない可能性があります。そのため、転送はビルド時に指定するのが一般的に最適な方法です。
WebLogic Web サービスのコンテキスト パス (コンテキスト ルートとも呼ばれる) は、さまざまな場所で指定できます。この節では、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
属性。
JAX-RPC Web サービスの場合のみ、@WL
XXX
Transport
JWS アノテーションの contextPath
属性。
注意 : このオプションは 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" />
以下の例では、jwsc
Ant タスクの使い方を示します。ここでは、build.xml
Ant ファイルで、Web サービスを繰り返し開発する際に使用する build-service
ターゲットに、このタスクを指定します。その他、WebLogic Web サービスを繰り返し開発する際に役立つ clean
、deploy
、client
、およびrun
などのさまざまなターゲットを格納した build.xml
ファイルの完全な例については、『Oracle Fusion Middleware JAX-WS を使用した Oracle WebLogic Server Web サービス入門』または『Oracle Fusion Middleware JAX-RPC を使用したOracle WebLogic Server 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>
子要素で指定されていたかのように処理します。http://ant.apache.org/manual/
にある<include>
要素は標準の 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 ファイルを記述し、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 ファイルに 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 サービスの <WLXXXTrasnsport>
要素または @WLXXXTransport
アノテーション (JAX-RPC の場合のみ) が 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 サービスのコンテキスト パスの定義」を参照。 |
両方 |
explode |
デプロイ可能な Web サービスを格納する生成済みの WAR ファイルを、展開ディレクトリ形式にするかどうかを指定する。 この属性の有効な値は、 |
不可 |
両方 |
|
生成された WAR ファイルに WSDL ファイルを含めるかどうかを指定する。この属性の有効な値は、 |
可 |
JAX-WS |
name |
生成された WAR ファイル ( この属性のデフォルト値は |
不可 |
両方 |
wsdlOnly |
注意 : デプロイメント記述子やサービス エンドポイント インタフェースなどの他のアーティファクトは生成されないが、Web サービス オペレーションのパラメータと戻り値のデータ型を記述する XML スキーマを WSDL に含める必要があるので、データ バインディング アーティファクトは生成される。 WSDL は、 この属性を この属性の有効な値は、 |
不可 |
両方 |
WLHttpTransport
要素では、生成された WSDL のポート名に加え、HTTP 転送形式で Web サービスを呼び出すために使用するコンテキスト パスおよび URL のサービス URI セクションを指定します。
<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 の場合、serviceURI 属性のデフォルト値は 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
要素では、生成された WSDL のポート名に加え、セキュリティで保護された HTTPS 転送形式で Web サービスを呼び出すために使用するコンテキスト パスおよび URL のサービス URI セクションを指定します。
<WLHttpsTransport>
要素は <jws>
要素の子です。<WLHttpsTransport>
要素は、特定の JWS ファイルに対して 1 つ指定できます。または、この要素は指定しなくても構いません。JAX-RPC Web サービスを生成する場合のみ、<WlHttpsTransport>
子要素を使用できます。この要素の指定時に従うガイドラインについては、「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 の場合、serviceURI 属性のデフォルト値は JAX-RPC の場合、この属性のデフォルト値は JWS ファイルの名前。ただし、拡張子は付かない。たとえば、JWS ファイルが |
不可 |
portName |
生成された WSDL のポートの名前。この属性は、WSDL の この属性のデフォルト値は、JWS ファイルの |
不可 |
注意 : JAX-RPC Web サービスを生成する場合のみ、<WLJmsTransport> 子要素を使用できます。 |
WLJMSTransport
要素では、生成された WSDL のポート名に加え、JMS 転送形式で Web サービスを呼び出すために使用するコンテキスト パスおよび URL のサービス URI セクションを指定します。また、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 の場合、serviceURI 属性のデフォルト値は JAX-RPC の場合、この属性のデフォルト値は JWS ファイルの名前。ただし、拡張子は付かない。たとえば、JWS ファイルが |
不可 |
portName |
生成された WSDL のポートの名前。この属性は、WSDL の この属性のデフォルト値は、JWS ファイルの |
不可 |
queue |
JMS 転送用にコンフィグレーション済みの JMS キューの JNDI 名。JMS 転送の使用については、『Oracle Fusion Middleware JAX-RPC を使用した WebLogic 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 タスクの http://ant.apache.org/manual/
にある Ant のマニュアルを参照してください。
JAX-WS Web サービス、JAX-RPC Web サービスのいずれを生成する場合でも、<clientgen>
子要素を使用できます。
次の表では、<clientgen>
要素の属性について説明します。
表 2-10 <clientgen> 要素の属性
属性 | 説明 | 必須/省略可能 | JAX-RPC/JAX-WS/両方 |
---|---|---|---|
autoDetectWrapped |
WSDL ファイルを解析してクライアント スタブを作成する場合、 この属性の有効な値は、 |
省略可能 |
JAX-RPC |
catalog |
外部 XML カタログ ファイルを指定する。XML カタログファイルの使用の詳細については、『Oracle Fusion Middleware Oracle WebLogic Server JAX-WS を使用した Web サービスの高度な機能のプログラミング』の「XML カタログの使用 」の参照。 |
不可 |
JAX-WS |
handlerChainFile |
JWS ファイルが Web サービスを呼び出すときに実行されるクライアントサイド SOAP メッセージ ハンドラを記述する XML ファイルの名前を指定する。 ファイルで指定された各ハンドラは、以下のタイミングで 2 回実行される。
この属性を指定しなかった場合、Web サービスが JWS ファイルから呼び出される時、クライアントサイドのハンドラは CLASSPATH にあっても実行されない。 クライアントサイドの SOAP メッセージ ハンドラの作成の詳細および例については、『Oracle Fusion Middleware JAX-RPC を使用した WebLogic Web サービス プログラマーズ ガイド』の「クライアント サイドの SOAP メッセージ ハンドラおよびハンドラ チェーンの作成」を参照。 |
省略可能 |
JAX-RPC |
generateAsyncMethods |
たとえば、 注意 : JWS ファイル内で呼び出される Web サービスのオペレーションが一方向としてマークされている場合、 この属性の有効な値は、 |
省略可能 |
JAX-RPC |
generatePolicyMethods |
この属性の有効な値は、 詳細については、『Oracle Fusion Middleware Oracle WebLogic Server 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。 生成されたスタブ ファクトリ クラスは、デフォルト コンストラクタ内のこの属性の値を使用する。 |
可 |
両方 |
Web サービスの実装を格納する WAR を生成する際に新しい Web アプリケーション デプロイメント記述子を作成するのではなく、jwsc
タスクが既存のファイルをコピーし、それらを新しい情報で更新することを指定するために <descriptor>
要素を使用します。これは、1 つまたは複数の Web サービスの追加対象となる既存の Web アプリケーションがある場合に有効です。通常、この要素は、標準の <FileSet>
Ant タスクと一緒に使用し、HTML ファイルおよび Java クラスなど、その他の既存の Web アプリケーション アーティファクトを jwsc
生成の Web アプリケーションにコピーします。
この要素と一緒に使用できるデプロイメント記述子ファイルは次の 2 つのみです。
web.xml
weblogic.xml
各デプロイメント記述子ファイルには、個別の <descriptor>
要素を使用します。
<descriptor>
要素は、<module>
または <jws>
(メインの jwsc
Ant タスクの直接の子である場合の <jws>) の子です。
注意 : <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 Fusion Middleware JAX-WS を使用した Oracle WebLogic Server Web サービス入門』の「バインディング宣言を使用した XML Schema-to-Java マッピングのカスタマイズ」を参照してください。
1 つまたは複数の XMLBeans コンフィグレーション ファイル (通常、.xsdconfig
で終わる) (JAX-RPC の場合)。Web サービスで、パラメータまたは戻り値としてhttp://xmlbeans.apache.org/
にあるデータ型 Apache XMLBeans を使用している場合、この要素を使います。
<binding>
要素は、標準の Ant <Fileset>
要素に似ており、同じ属性をすべて持ちます。指定可能な属性の完全なリストについては、http://ant.apache.org/manual/CoreTypes/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
、@Policies
、および @Policy
のみ。他の JWS-181 JWS アノテーションを指定した場合、JWS ファイルを Web サービスにコンパイルしようとすると、jwsc
Ant タスクはエラーを返します。
また、@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 (https://jax-ws.dev.java.net
にある JSR 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 Web サービスの場合は、packageName
属性を指定すると、すべてのアーティファクト (Java 複合データ型、JWS インタフェース、JWS インタフェース実装) がこのパッケージに生成される。この場合に、生成される Java 複合データ型のパッケージ名を変更するには、wsdlc
Ant タスクの <binding>
子要素を使用してカスタム バインディング宣言ファイルを指定します。カスタム バインディング宣言ファイルの作成については、『Oracle Fusion Middleware JAX-WS を使用した Oracle WebLogic Server Web サービス入門』の「JAXB データ バインディングの使用」を参照してください。
JAX-RPC Web サービスの場合は、wsdlc
Ant タスクの packageName
属性を指定すると、生成される JWS インタフェースおよび実装のみがこのパッケージに含まれる。ただし、生成される Java 複合データ型のパッケージ名は、packageName
属性を指定しているかどうかに関係なく、常に XSD スキーマ型のネームスペースに対応します。
jwsc
と組み合わせた wsdlc
タスクの完全な使用例については、『Oracle Fusion Middleware JAX-WS を使用した Oracle WebLogic Server 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 Fusion Middleware JAX-WS を使用した Oracle WebLogic Server Web サービス入門』の「バインディング宣言を使用した XML Schema-to-Java マッピングのカスタマイズ」を参照してください。
1 つまたは複数の XMLBeans コンフィグレーション ファイル (通常、.xsdconfig
で終わる) (JAX-RPC の場合)。Web サービスで、パラメータまたは戻り値として http://xmlbeans.apache.org/
データ型 にあるApache XMLBeans を使用している場合、この要素を使います。
<binding>
要素は、標準の Ant <Fileset>
要素に似ており、同じ属性をすべて持ちます。指定可能な属性の完全なリストについては、http://ant.apache.org/manual/CoreTypes/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 Fusion Middleware JAX-WS を使用した Oracle WebLogic Server Web サービス プログラマーズ ガイド』の「XML カタログの使用」を参照してください。
次の表では、wsdlc
Ant タスクの属性について説明します。wsdlc
Ant タスクで設定可能な、標準の Ant javac
タスクに関連する属性のリストについては、「wsdlc に適用される標準の Ant javac 属性」を参照してください。
次の表では、WebLogic 固有の wsdlc 属性について説明します。
表 2-13 WebLogic 固有の属性 wsdlc Ant タスク
属性 | 説明 | データ型 | 必須/省略可能 | JAX-RPC/JAX-WS/両方 |
---|---|---|---|---|
autoDetectWrapped |
WSDL ファイルを解析して、Web サービスを実装する部分的な JWS ファイルを作成する場合、 この属性の有効な値は、 |
ブール |
省略可能 |
JAX-RPC |
catalog |
外部 XML カタログ ファイルを指定する。XML カタログファイルの使用の詳細については、『Oracle Fusion Middleware JAX-WS を使用した WebLogic Web サービス プログラマーズ ガイド』の「XML カタログの使用」を参照。 |
String |
省略可能 |
両方 |
destImplDir |
途中まで作成済みの JWS 実装ファイルの生成先となるディレクトリ。 生成された JWS ファイルは、生成された JWS インタフェース ファイル (JAR ファイル内に格納) を実装する。メソッドを目的どおりに実行するようにそのメソッドに Java コードを追加して、この JWS 実装ファイルを更新する。後で、 |
文字列 |
省略可能 |
両方 |
destJavadocDir |
JWS インタフェースを記述する Javadoc の生成先となるディレクトリ。 指定した Web サービスを実装する JWS インタフェース ファイルを格納した、生成された JAR ファイルを展開または更新する必要はないので、この生成された Javadoc からインタフェースに関する詳細を入手できる。途中まで作成済みの JWS 実装ファイルとともにこの Javadoc を使用すると、部分的に生成されている Web サービスにビジネス ロジックを追加できる。 |
文字列 |
省略可能 |
両方 |
destJwsDir |
JWS インタフェース ファイルおよびデータ バインディング アーティファクトを格納する JAR ファイルの生成先となるディレクトリ。 生成される JAR ファイルの名前は |
文字列 |
必須 |
両方 |
explode |
生成された JWS インタフェース ファイルおよびデータ バインディング アーティファクトを格納する生成済みの JAR ファイルを、展開ディレクトリ形式にするかどうかを指定する。 この属性の有効な値は、 |
ブール |
省略可能 |
両方 |
jaxRPCWrappedArrayStyle |
この属性の有効な値は、 |
ブール |
省略可能 |
JAX-RPC |
packageName |
生成された JWS インタフェースおよび実装ファイルの生成先となるパッケージ。 この属性を指定しない場合、 |
文字列 |
省略可能 |
両方 |
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 ファイルの名前。 WSDL ファイル名はパス名を含んでいる必要がある。このパス名は、絶対パスでも相対パスでも構わない。相対パスの場合は、Ant |
文字列 |
必須 |
両方 |
type |
部分的な実装の生成対象である Web サービスのタイプ (JAX-WS または JAX-RPC) を指定する。 有効な値は以下のとおり。
デフォルト値は |
文字列 |
省略可能 |
両方 |
typeFamily |
生成するデータ バインディング クラスのタイプを指定する。 有効な値は以下のとおり。
デフォルト値は 注意 : JAXB データ バインディング クラスは、通常に JAX-WS Web サービスのために発生されます。 |
文字列 |
省略可能 |
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 Fusion Middleware JAX-WS を使用した Oracle WebLogic Server 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 Fusion Middleware JAX-WS を使用した Oracle WebLogic Server Web サービス プログラマーズ ガイド』の「XML カタログの使用」を参照してください。
次の表では、wsdlget
Ant タスクの属性について説明します。
表 2-14 WebLogic 固有の属性 wsdlget Ant タスク
属性 | 説明 | データ型 | 必須/省略可能 | JAX-RPC/JAX-WS/両方 |
---|---|---|---|---|
catalog |
外部 XML カタログ ファイルを指定する。XML カタログ ファイル の作成の詳細については、『Oracle Fusion Middleware JAX-WS を使用した WebLogic Web サービス プログラマーズ ガイド』の「XML カタログの使用」を参照。 |
String |
省略可能 |
両方 |
destDir |
XML リソースのコピー先のディレクトリ。 生成された JWS ファイルは、生成された JWS インタフェース ファイル (JAR ファイル内に格納) を実装する。メソッドを目的どおりに実行するようにそのメソッドに Java コードを追加して、この JWS 実装ファイルを更新する。後で、 |
String |
必須 |
両方 |
wsdl |
ローカル ディレクトリにコピーする WSDL の名前。 |
String |
省略可能 |
両方 |