WSDL ファイルからの JAX-WS クライアントの開発

Java™ API for XML-Based Web Services (JAX-WS) ツールは、 Web サービス記述言語 (WSDL) ファイルから開始して開発する場合、 静的 JAX-WS Web サービス・クライアントの開発に必要な Java 成果物の生成をサポートします。

始める前に

WSDL ファイルから開始する JAX-WS Web サービスの開発にトップダウン開発アプローチを使用する場合、 WSDL ファイルの Uniform Resource Locator (URL) を取得する必要があります。

[Windows][z/OS]WSDL ファイルがローカル・ファイルである場合、URL は file:drive:¥path¥file_name.wsdl のようになります。

[Linux][AIX][HP-UX][Solaris][IBM i]WSDL ファイルがローカル・ファイルである場合、URL は file:/path/file_name.wsdl のようになります。

また、絶対または相対ファイル・システム・パスを使用してローカル・ファイルを指定することもできます。

このタスクについて

JAX-WS の静的クライアント・プログラミング・モデルは、 動的プロキシー・クライアントと呼ばれます。 動的プロキシー・クライアントは、提供されるサービス・エンドポイント・インターフェースに基づく Web サービスを呼び出します。 プロキシーを作成した後、 クライアント・アプリケーションはこれらのインターフェースの標準実装のように、プロキシーにあるメソッドを呼び出すことができます。 動的プロキシー・プログラミング・モデルを使用する JAX-WS Web サービス・クライアントの場合、 JAX-WS ツールの wsimport を使用して WSDL ファイルを処理し、 Web サービス・クライアントの作成に使用される移植可能な Java 成果物を生成します。 wsimport ツールを使用して以下の移植可能な Java 成果物を作成します。
  • サービス・エンドポイント・インターフェース (SEI)
  • サービス・クラス
  • wsdl:fault クラスからマップされる例外クラス (存在する場合)
  • Java Architecture for XML Binding (JAXB) で生成されるタイプ値 (XML スキーマ・タイプからマップされる Java クラス)
サポートされる構成 サポートされる構成: wsimportwsgenschemagen、および xjc コマンド行ツールは、z/OS® プラットフォームではサポートされていません。この機能は、z/OS プラットフォームで稼働する WebSphere® Application Server で提供されるアセンブリー・ツールによって提供されます。 これらのツールについての詳細は、JAX-WS アプリケーションのこれらのコマンド行ツールに関する説明を参照してください。sptcfg
ベスト・プラクティス ベスト・プラクティス: WebSphere Application Server は、Java API for XML-Based Web Services (JAX-WS) および Java Architecture for XML Binding (JAXB) のツールを提供します。wsimportwsgenschemagen、および xjc コマンド行ツールは、WebSphere Application Server traditionalapp_server_root¥bin¥ ディレクトリーにあります。xjc コマンドおよび schemagen コマンド は、Liberty プロファイルの app_server_root¥jaxb¥bin¥ ディレクトリーにあります。 WebSphere Application Server および JDK が提供するツールによって生成される成果物は両方とも、同じレベルの仕様をサポートすることがあります。 一般的に、JDK ツールにより生成される成果物は、 その他の対応しているランタイム環境間で移植可能です。ただし、 WebSphere Application Server 環境内で シームレスな統合を実現して、WebSphere Application Server のみで サポートされる機能を利用するには、この製品で提供されるツールを使用するのがベスト・プラクティスです。JAX-WS および JAXB V2.2 ツールを 利用するには、アプリケーション・サーバーで提供され、 app_server_root¥bin¥ ディレクトリーにある ツールを使用します。bprac

これらの JAX-WS ツールは、コマンド行から使用するだけでなく、 Ant ビルド環境内で起動することができます。 wsimport ツールを起動するには、Ant ビルド環境内から com.sun.tools.ws.ant.WsImport Ant タスク を使用します。この Ant タスクが正しく機能するようにするには、 ws_ant スクリプトを使用して Ant を起動する必要があります。

手順

wsimport コマンドを実行して、移植可能なクライアント成果物を生成します。 wsimport ツールは、app_server_root¥bin¥ ディレクトリーにあります。
[Windows]
app_server_root\bin\wsimport.bat wsdl_URL 
[AIX][HP-UX][Linux][Solaris]
app_server_root/bin/wsimport.sh wsdl_URL
[IBM i]
app_server_root/bin/wsimport wsdl_URL
(オプション) wsimport コマンドでは、以下のオプションを使用します。
  • -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 情報が 含まれるようになります。例えば、次のように指定します。
    wsimport -keep -wsdllocation /META-INF/wsdl/MyService.wsdl
    bprac
  • WSDL またはスキーマのカスタマイズを使用する場合、-b オプションを使用して、 カスタマイズを含む外部のバインディング・ファイルを指定します。

    WSDL ファイル内のバインディングをカスタマイズして、非同期マッピングまたは添付ファイルを使用可能にすることができます。 非同期インターフェースを生成するには、 クライアント・サイド専用のカスタマイズ enableAsyncMapping バインディング宣言を、 wsdl:definitions エレメントに、または WSDL ファイルに定義されている外部のバインディング・ファイルに追加します。 カスタム・クライアントまたはサーバーのバインディング・ファイルにある enableMIMEContent バインディング宣言を使用して、デフォルトの mime:content マッピング・ルールを使用可能または使用不可にします。カスタム・バインディング宣言の追加情報については、 JAX-WS 仕様の第 8 章を参照してください。

このコマンドおよび指定可能なその他のオプションの詳細については、wsimport コマンドの説明を参照してください。

タスクの結果

JAX-WS Web サービスを呼び出すことのできる JAX-WS クライアントを作成するための、 生成済み Java 成果物が得られました。wsimport コマンドの使用法、 構文規則、およびパラメーターについてさらに学習するには、JAX-WS アプリケーションの資料で wsimport コマンドの説明を参照してください。

以下の例は、移植可能な成果物を生成するために、wsimport コマンドを使用して サンプルの ping.wsdl ファイルを処理する方法を示しています。
  1. 以下の 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>
  2. app_server_root¥bin¥ ディレクトリーから wsimport コマンドを実行します。
    [Windows]
    app_server_root\bin\wsimport.bat -keep -verbose ping.wsdl
    [Linux][AIX][HP-UX][Solaris]AIX® や Linux などのオペレーティング・システムでは、 スクリプトが親シェルに提供 され、次のコマンドを実行することで、 エクスポートされた変数が継承されます。
    . ./setupCmdLine.sh (ピリオド間のスペースに注意してください。)
    . /app_server_root>/bin ディレクトリーから、 次の wsimport コマンドを実行します。
    app_server_root/bin/wsimport.sh -keep -verbose ping.wsdl 
    [IBM i]
    app_server_root/bin/wsimport -keep -verbose ping.wsdl
wsimport コマンドによりテンプレート・ファイルを生成すると、 以下のファイルが生成されます。
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 成果物をパッケージにする場合に使用されます。

次のタスク

クライアント実装を完了します。

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxwsclientfromwsdl
ファイル名:twbs_jaxwsclientfromwsdl.html