WebSphere Application Server Version 6.1 Feature Pack for Web Services   
             オペレーティング・システム: AIX , HP-UX, i5/OS, Linux, Solaris, Windows, Windows Vista, z/OS

             目次と検索結果のパーソナライズ化
             New or updated topic for this feature pack

JAX-WS API を使用した動的クライアントの開発

Java API for XML-Based Web Services (JAX-WS) は、サービス・エンドポイント操作の動的呼び出しをサポートします。

このタスクについて

JAX-WS は、新規の動的ディスパッチ・クライアント API を備えています。 これは、既存の Java API for XML-based RPC (JAX-RPC) ベースの 動的起動インターフェース (DII) よりも 汎用的であり、柔軟性があります。ディスパッチ・クライアント・インターフェースの javax.xml.ws.Dispatch は、XML メッセージング指向クライアントであり、 XML 構成体を使用して XML レベルで作業することを好む上級 XML 開発者向けです。 ディスパッチ・クライアントを作成するには、 ディスパッチ・クライアント API、サポートされるオブジェクト・タイプ、および関連した Web サービス記述言語 (WSDL) ファイルに関するメッセージ表記の知識に習熟している必要があります。

ディスパッチ API は、PAYLOAD モードまたは MESSAGE モードのいずれかでデータを送信できます。 PAYLOAD モードを使用する場合、ディスパッチ・クライアントは <soap:Body> の内容の提供のみを担当し、入力ペイロードは JAX-WS の <soap:Envelope> エレメントに含まれます。 MESSAGE モードを使用する場合、 ディスパッチ・クライアントは SOAP エンベロープ全体の提供を担当します。

ディスパッチ・クライアント API では、アプリケーション・クライアントがメッセージまたはペイロードを XML として構成する必要があり、またメッセージまたはメッセージ・ペイロードの詳細な知識が要求されます。 ディスパッチ・クライアントは、ソース・オブジェクト、Java Architecture for XML Binding (JAXB) オブジェクト、またはデータ・ソース・オブジェクトを使用する際に、HTTP バインディングを使用できます。 ディスパッチ・クライアントは、以下のタイプのオブジェクトをサポートします。
  • javax.xml.transform.Source: ソース・オブジェクトを使用して、クライアントが XML API を直接使用できるようにします。 ソース・オブジェクトは SOAP および HTTP バインディングと一緒に使用できます。
  • JAXB オブジェクト: JAXB オブジェクトを使用して、クライアントが、XML スキーマから生成される JAXB オブジェクトを使用できるようにします。これにより、クライアントは、JAX-WS アプリケーションを使用して XML を作成および操作できるようになります。 JAXB オブジェクトは、SOAP および HTTP バインディングと一緒にのみ使用できます。
  • javax.xml.soap.SOAPMessage: SOAPMessage オブジェクトを使用して、クライアントが SOAP メッセージを処理できるようにします。 SOAPMessage オブジェクト は、SOAP バージョン 1.1 または SOAP バージョン 1.2 のバインディングと一緒にのみ使用できます。
  • javax.activation.DataSource: DataSource オブジェクトを使用して、 クライアントが Multipurpose Internet Mail Extension (MIME) メッセージを処理できるようにします。 DataSource は、HTTP バインディングと一緒にのみ使用してください。
ディスパッチ API は、Java ランタイム環境 バージョン 5 で導入された generics の概念を使用します。 ディスパッチ・インターフェースの invoke() メソッド別に、 generics を使用して戻りの型が決定されます。

プロシージャー

  1. 動的クライアントにデータを送信させるのは PAYLOAD モードであるのか、 あるいは MESSAGE モードであるのかを決定します。
  2. サービス・インスタンスを作成して、少なくとも 1 つのポートをそれに追加します。 ポートは、プロトコル・バインディングとサービス・エンドポイント・アドレス情報を伝送します。
  3. Service.Mode.PAYLOAD メソッドまたは Service.Mode.MESSAGE メソッドのいずれかを使用して Dispatch<T> オブジェクトを作成します。
  4. 要求コンテキスト・プロパティーを javax.xml.ws.BindingProvider インターフェースに構成します。 要求コンテキストを使用して、HTTP 認証の使用可能化、エンドポイント・アドレスの指定などの追加プロパティーを指定します。
  5. 動的クライアントのクライアント要求メッセージを構成します。
  6. ディスパッチ・クライアントを使用して、サービス・エンドポイントを同期または非同期に呼び出します。
  7. サービスからの応答メッセージを処理します。

結果

ディスパッチ API を使用して、動的 JAX-WS クライアントを開発しました。 ディスパッチ・クライアントの使用方法について詳しくは、JAX-WS 2.0 仕様の第 4 章、セクション 3 を参照してください。

以下の例は、ディスパッチ・クライアントを作成し、サンプルの EchoService サービス・エンドポイントを呼び出すステップを示しています。
String endpointUrl = ...;
		
QName serviceName = new QName("http://com/ibm/was/wssample/echo/",
 "EchoService");
QName portName = new QName("http://com/ibm/was/wssample/echo/",
 "EchoServicePort");
		
/** Create a service and add at least one port to it. **/ 
Service service = Service.create(serviceName);
service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, endpointUrl);
		
/** Create a Dispatch instance from a service.**/ 
Dispatch<SOAPMessage> dispatch = service.createDispatch(portName, 
SOAPMessage.class, Service.Mode.MESSAGE);
	
/** Create SOAPMessage request. **/
// compose a request message
MessageFactory mf = MessageFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL);

// Create a message.  This example works with the SOAPPART.
SOAPMessage request = mf.createMessage();
SOAPPart part = request.getSOAPPart();

// Obtain the SOAPEnvelope and header and body elements.
SOAPEnvelope env = part.getEnvelope();
SOAPHeader header = env.getHeader();
SOAPBody body = env.getBody();

// Construct the message payload.
SOAPElement operation = body.addChildElement("invoke", "ns1",
 "http://com/ibm/was/wssample/echo/");
SOAPElement value = operation.addChildElement("arg0");
value.addTextNode("ping");
request.saveChanges();

/** Invoke the service endpoint. **/
SOAPMessage response = dispatch.invoke(request);

/** Process the response. **/



関連概念
JAX-WS
JAX-WS クライアント・プログラミング・モデル
関連タスク
Web サービス・クライアントの開発とデプロイ
WSDL ファイルからの JAX-WS クライアントの開発
JAX-WS Web サービスの非同期呼び出し
アノテーションを使用した JAX-WS アプリケーションのサービス・エンドポイント実装の開発
関連資料
Web サービス仕様と API
関連情報
Java API for XML Web Services (JAX-WS) API documentation
Java API for XML Web Services (JAX-WS) API User's Guide documentation
タスク・トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 4:10:06 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.wsfep.multiplatform.doc/info/ae/ae/twbs_jaxwsdynclient.html