WSDL ファイルからの JAX-WS クライアントの開発
Java™ API for XML-Based Web Services (JAX-WS) ツールは、 Web サービス記述言語 (WSDL) ファイルから開始して開発する場合、 静的 JAX-WS Web サービス・クライアントの開発に必要な Java 成果物の生成をサポートします。
始める前に
WSDL ファイルがローカル・ファイルである場合、URL は file:drive:¥path¥file_name.wsdl のようになります。
WSDL ファイルがローカル・ファイルである場合、URL は file:/path/file_name.wsdl のようになります。
また、絶対または相対ファイル・システム・パスを使用してローカル・ファイルを指定することもできます。
このタスクについて
- サービス・エンドポイント・インターフェース (SEI)
- サービス・クラス
- wsdl:fault クラスからマップされる例外クラス (存在する場合)
- Java Architecture for XML Binding (JAXB) で生成されるタイプ値 (XML スキーマ・タイプからマップされる Java クラス)


これらの JAX-WS ツールは、コマンド行から使用するだけでなく、 Ant ビルド環境内で起動することができます。 wsimport ツールを起動するには、Ant ビルド環境内から com.sun.tools.ws.ant.WsImport Ant タスク を使用します。この Ant タスクが正しく機能するようにするには、 ws_ant スクリプトを使用して Ant を起動する必要があります。
手順
![[Windows]](../images/windows.gif)
app_server_root\bin\wsimport.bat wsdl_URL
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
app_server_root/bin/wsimport.sh wsdl_URL
![[IBM i]](../images/iseries.gif)
app_server_root/bin/wsimport wsdl_URL
- -verbose オプションを使用して、コマンドを実行するときに生成されたファイルのリストを確認します。
- -keep オプションを使用して、生成された Java ファイルを保持します。
- -wsdlLocation オプションを使用して、WSDL ファイルのロケーションを指定します。
ベスト・プラクティス: 他のシステムに移植可能な JAX-WS Web サービス・クライアント・エンタープライズ・アーカイブ (EAR) ファイルが確実に生成されるようにするためのベスト・プラクティスは、Web サービス・クライアント Java アーカイブ (JAR) ファイルや Web アーカイブ (WAR) ファイルなどのアプリケーション・モジュール内に WSDL 文書をパッケージすることです。WSDL ファイルの ロケーションのための相対 URI は、-wsdllocation アノテーション属性を使用して指定することができます。例えば、MyService.wsdl ファイルが META-INF/wsdl/ ディレクトリーにある場合、wsimport ツールを実行し、-wsdllocation オプションを使用して、WSDL ファイルの場所として使用する値を指定します。これにより、生成される成果物に、 アプリケーションが管理コンソールにロードされる際に必要な正しい -wsdllocation 情報が 含まれるようになります。例えば、次のように指定します。
bpracwsimport -keep -wsdllocation /META-INF/wsdl/MyService.wsdl
- WSDL またはスキーマのカスタマイズを使用する場合、-b オプションを使用して、
カスタマイズを含む外部のバインディング・ファイルを指定します。
WSDL ファイル内のバインディングをカスタマイズして、非同期マッピングまたは添付ファイルを使用可能にすることができます。 非同期インターフェースを生成するには、 クライアント・サイド専用のカスタマイズ enableAsyncMapping バインディング宣言を、 wsdl:definitions エレメントに、または WSDL ファイルに定義されている外部のバインディング・ファイルに追加します。 カスタム・クライアントまたはサーバーのバインディング・ファイルにある enableMIMEContent バインディング宣言を使用して、デフォルトの mime:content マッピング・ルールを使用可能または使用不可にします。カスタム・バインディング宣言の追加情報については、 JAX-WS 仕様の第 8 章を参照してください。
このコマンドおよび指定可能なその他のオプションの詳細については、wsimport コマンドの説明を参照してください。
タスクの結果
例
- 以下の ping.wsdl ファイルを一時ディレクトリーにコピーします。
<?xml version="1.0" encoding="UTF-8"?> <!-- * This program can be used, run, copied, modified and distributed * without royalty for the purpose of developing, using, marketing, or distributing. --> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://com/ibm/was/wssample/sei/ping/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="PingService" targetNamespace="http://com/ibm/was/wssample/sei/ping/"> <wsdl:types> <xsd:schema targetNamespace="http://com/ibm/was/wssample/sei/ping/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="pingStringInput"> <xsd:complexType> <xsd:sequence> <xsd:element name="pingInput" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="pingOperationRequest"> <wsdl:part element="tns:pingStringInput" name="parameter" /> </wsdl:message> <wsdl:portType name="PingServicePortType"> <wsdl:operation name="pingOperation"> <wsdl:input message="tns:pingOperationRequest" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="PingSOAP" type="tns:PingServicePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="pingOperation"> <soap:operation soapAction="pingOperation" style="document" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> </wsdl:operation> </wsdl:binding> <wsdl:service name="PingService"> <wsdl:port binding="tns:PingSOAP" name="PingServicePort"> <soap:address location="http://localhost:9080/WSSampleSei/PingService" /> </wsdl:port> </wsdl:service> </wsdl:definitions>
- app_server_root¥bin¥ ディレクトリーから wsimport コマンドを実行します。
app_server_root\bin\wsimport.bat -keep -verbose ping.wsdl
AIX® や Linux などのオペレーティング・システムでは、 スクリプトが親シェルに提供 され、次のコマンドを実行することで、 エクスポートされた変数が継承されます。
. /app_server_root>/bin ディレクトリーから、 次の wsimport コマンドを実行します。. ./setupCmdLine.sh (ピリオド間のスペースに注意してください。)
app_server_root/bin/wsimport.sh -keep -verbose ping.wsdl
app_server_root/bin/wsimport -keep -verbose ping.wsdl
com\ibm\was\wssample\sei\ping\ObjectFactory.java
com¥ibm¥was¥wssample¥sei¥ping¥package-info.java
com¥ibm¥was¥wssample¥sei¥ping¥PingServicePortType.java
com¥ibm¥was¥wssample¥sei¥ping¥PingService.java
com¥ibm¥was¥wssample¥sei¥ping¥PingStringInput.java
ObjectFactory.java ファイル、 PingService.java ファイル、および PingServicePortType.java ファイルは、 生成済み Java クラス・ファイルです。 これらは、Java アーカイブ (JAR) または Web アプリケーション・アーカイブ (WAR) ファイル内にあるクライアント実装を使用して Java 成果物をパッケージにする場合に使用されます。