IBM 専有の Web Services Addressing SPI を使用したメッセージ・アドレッシング・プロパティーの指定と獲得

IBM 専有の Web Services Addressing (WS-Addressing) システム・プログラミング・インターフェース (SPI) を使用すると、 JAX-WS BindingProvider 要求コンテキストのプロパティー、または JAX-RPC の Stub オブジェクトまたは Call オブジェクトのプロパティーを使用して、アウトバウンド・クライアント・メッセージの SOAP ヘッダーに WS-Addressing メッセージ・アドレッシング・プロパティー (MAP) を追加できます。 ターゲット・エンドポイントがメッセージを受信したとき、SPI によって、エンドポイントがメッセージ・コンテキスト上のプロパティーを介して MAP を獲得することが可能になります。

このタスクについて

JAX-WS 標準には、同等の SPI はありません。 JAX-WS エンドポイント参照を使用するクライアントにメッセージ・アドレッシング・プロパティーを設定する場合、 そのエンドポイント参照は、これらの SPI で使用する前に、IBM 専有のクラスに変換する必要があります。

WS-Addressing サポートを使用している Web サービス開発者、または Web サービス・メッセージ上で、IBM 専有の WS-Addressing SPI を使用してフォールトまたは応答のエンドポイント参照などのメッセージ・アドレッシング・プロパティーを指定するシステム・プログラマーの場合は、このタスクを実行してください。

設定または取得可能なプロパティーについては、プロパティー・インスタンスの Java™ タイプとともに、IBM 専有 Web Services Addressing SPIで説明されています。 宛先、応答、またはフォールトのエンドポイント参照など、ほとんどのプロパティーのタイプは com.ibm.websphere.wsaddressing.EndpointReference です。 リレーションシップ・プロパティーは、com.ibm.wsspi.wsaddressing.Relationship クラスのインスタンスを含む java.util.Set オブジェクトです。 応答メッセージにおいて応答するメッセージの ID を指定する場合など、メッセージ間のアソシエーションを指定する場合は、リレーションシップを使用します。 アクション・プロパティーは、ターゲット・エンドポイント内で特定のメソッドまたは操作を識別する AttributedURI オブジェクトです。
重要: 宛先エンドポイント参照とアクション・プロパティーは、メッセージが WS-Addressing 準拠であるために必要です。

手順

  1. Web Services Addressing を使用する JAX-RPC Web サービス・アプリケーションの作成で説明されているように、 クライアント上で、サービスからエンドポイント参照を取得し、 それをご使用の BindingProvider オブジェクトの要求コンテキスト、Stub オブジェクトまたは Call オブジェクトに関連付けます。
  2. 必要なプロパティーのインスタンスを作成します。 例えば、ターゲット・サービスが応答を送信するためのエンドポ イント参照を指定したい場合は、com.ibm.websphere.wsaddressing.EndpointReference クラスのインスタンス を作成し、WSADDRESSING_REPLYTO_EPR プロパティーとして使用します。
  3. BindingProvider オブジェクトの要求コンテキスト、Stub オブジェクトまたは Call オブジェクトと関連付けることによって、必要なプロパティーを設定します。 Stub または Call オブジェクトを使用する場合は、 setProperty(String property_name, Object value) メソッドを使用します。 最初のステップで必要であったエンドポイント参照とは異なり、 これらのエンドポイント参照は SOAP メッセージの本文ではなくヘッダーに渡されるため、 別のタイプに変換する必要はありません。 以下の例では、 BindingProvider オブジェクトの要求コンテキストでの宛先エンドポイント参照および応答エンドポイント参照を設定しています。
    import javax.xml.ws.BindingProvider;
    ...
     javax.xml.ws.Service jaxwsServiceObject= ...;
     Printer myPrinterProxy = jaxwsServiceObject.getPort(portName, Printer.class);
     
     javax.xml.ws.BindingProvider myBindingProvider = (javax.xml.ws.BindingProvider)myPrinterProxy;
    
     // Retrieve the request context for the BindingProvider object
     Map myMap = myBindingProvider.getRequestContext();
    
     // Associate the endpoint reference for the web service. This property is required for the message
     // to be WS-Addressing compliant.
      myMap.put(WSADDRESSING_DESTINATION_EPR, destinationEpr);
    
     // Associate the endpoint reference that represents the reply to the request context
     myMap.put(WSADDRESSING_REPLYTO_EPR, replyToEpr);
    BindingProvider オブジェクト、Stub オブジェクト、または Call オブジェクトが呼び出されると、この製品によって適切な MAP がメッセージ・ヘッダーに追加されます。
  4. サーバー上で、現在スレッド上にある javax.xml.ws.WebServiceContext または javax.xml.rpc.handler.MessageContext オブジェクトを介して、 インバウンド・メッセージから MAP を取得します。 WebSphere® Application Server はメッセージを受信したとき、スレッド上のメッセージ・コンテキスト内に MAP 情報を書き込み、それをサービスに対して使用可能にします。 メッセージ・コンテキストは、例えば、エンドポイント・エンタープライズ Bean のセッション・コンテキストを使用して、取得することができます。 メッセージ・コンテキストについて詳しくは、JSR-109 標準を参照してください。 以下の例では、 Web サービス・コンテキストを使用して応答エンドポイント参照を取得します。
    import javax.xml.ws.handler.MessageContext;
    import javax.xml.ws.WebServiceContext; 
    ...
    
      // Obtain the message context from the WebService context 
      private WebServiceContext wsContext;
      MessageContext context = wsContext.getMessageContext();
    
      // Retrieve the reply endpoint reference
      replyToEpr = context.getProperty(WSADDRESSING_INBOUND_REPLYTO_EPR);

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



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