IBM 専有 Web Services Addressing SPI
IBM 所有の Web Services Addressing (WS-Addressing) システム・プログラミング・インターフェース (SPI) は、IBM 所有の WS-Addressing アプリケーション・プログラミング・インターフェース (API) を拡張して、エンドポイント参照および他の WS-Addressing 成果物の内容の作成とそれに関する判断、 および Web サービス・メッセージ上での WS-Addressing メッセージ・アドレッシング・プロパティー (MAP) の設定と、 Web サービス・メッセージからの同プロパティーの取得を可能にします。
この IBM 所有 SPI で標準 JAX-WS API クラスを使用することはできません。しかし、標準 JAX-WS API クラスを使用して作成したエンドポイント参照を、クラス com.ibm.websphere.wsaddressing.jaxws21.EndpointReferenceConverter を使用して IBM 所有のクラス com.ibm.websphere.wsaddressing.EndpointReference のにインスタンスに変換できます。このようにした後、専有 SPI でこの変換されたエンドポイント参照を使用することができます。
このトピックで取り上げるプログラミング・インターフェースについては、IBM WS-Addressing SPI の資料により詳しい説明があります。
エンドポイント参照の内容の作成と詳細化、 およびそれに関する判断

SPI は専有 WS-Addressing の com.ibm.websphere.wsaddressing.EndpointReference API を拡張して、com.ibm.wsspi.wsaddressing.EndpointReference インターフェースを介してさまざまな追加メソッドを提供します。 この追加機能を利用するためには、com.ibm.websphere.wsaddressing.EndpointReference の インスタンスを com.ibm.wsspi.wsaddressing.EndpointReference にキャストします。
同様に、SPI com.ibm.wsspi.wsaddressing.EndpointReferenceManager は、com.ibm.websphere.wsaddressing.EndpointReferenceManager API の 一連の機能を拡張します。
- エンドポイント参照の作成
- EndpointReference オブジェクトを作成するには、その EndpointReference オブジェクトが表す エンドポイントの URI を、createEndpointReference(URI) オペレーション または EndpointReferenceManager.createEndpointReference(AttributedURI) オペレーションを使用して指定します。 これらのメソッドは、API レベルで提供される createEndpointReference メソッドとは、 EndpointReference インスタンスの URI を自動生成しないという点で異なります。 これらのメソッドは、エンドポイントの URI が安定している場合、 例えばデプロイメントを制限しなくてよいテスト環境などで使用してください。
- エンドポイント参照の XML 表記と Java™ 表記の間のマッピング
- EndpointReference.getSOAPElement オペレーションを使用すると、 EndpointReference インターフェースのインスタンスをそれに対応する SOAP エレメント・インスタンスにシリアライズできます。 逆に、EndpointReference.createEndpointReference(SOAPElement) オペレーションによって、 タイプ EndpointReferenceType の SOAP エレメントをそれに対応する EndpointReference Java 表記に デシリアライズすることもできます。これらのシリアライゼーションおよびデシリアライゼーションのインターフェースは、 EndpointReference インスタンスが含まれるタイプのカスタム・バインダーを作成する場合に役に立ちます。
- より複雑な参照パラメーター・タイプの使用
- API レベルで提供される専有のインターフェースは、より単純なプログラミング・モデルを可能にするために、
タイプ xsd:string の参照パラメーターに制限されています。
SPI はこのサポートを拡張して、
タイプ <xsd:any> の参照パラメーターを使用できるようにします。
EndpointReference インターフェースで、
参照パラメーターを SOAP エレメントとして取得および設定することができます。
さらに EndpointReferenceManager クラスによって、
getSOAPElementReferenceParameterFromMessageContext オペレーションが提供され、
受信側のエンドポイントが、着信メッセージから String 以外のタイプの参照パラメーターを獲得できるようになります。
注: 参照パラメーターが含まれる EndpointReference オブジェクトでサービスを呼び出す際は、 存在するすべてのパーツ (名前空間、localpart、および接頭部) で、完全な QName オブジェクトを使用して参照パラメーターを作成する必要があります。 QName オブジェクトが完全でない場合、サービスの呼び出しは失敗します。
- エンドポイント参照の内容の設定とそれに関する判断
- EndpointReference インターフェースは、EndpointReference インスタンスの内容 (WS-Addressing の address や metadata プロパティーなど) を設定し、判断するためのオペレーションを提供します。 エンドポイント参照 (Metadata、AttributedURI、 および ServiceName) を構成する成果物を表すために、追加のインターフェースが用意されています。 これらのインターフェースのインスタンスは、 所有の WSAddressingFactory クラスのオペレーションで作成してください。
- サポートされる名前空間の獲得と変更
- この製品の WS-Addressing への対応として、複数の名前空間をサポートします。 専有 EndpointReference インターフェース上で提供される setNamespace オペレーション および getNamespace オペレーションで、特定の EndpointReference オブジェクトに関連付けられている名前空間の 変更と獲得が可能になります。 SOAP エレメントへのシリアライゼーションは、 EndpointReference オブジェクトの名前空間に対応しています。 デフォルトでは、宛先エンドポイント参照 (JAX-WS BindingProvider オブジェクトの要求コンテキストまたは JAX-RPC Stub または Call オブジェクト上の com.ibm.websphere.wsaddressing.WSAConstants.WSADDRESSING_DESTINATION_EPR プロパティーとして設定されるエンドポイント参照) の名前空間はメッセージの メッセージ・アドレッシング・プロパティーの名前空間を定義します。
WS-Addressing メッセージ・アドレッシング・プロパティーの設定と取得

アウトバウンド・メッセージでの WS-Addressing メッセージ・アドレッシング・プロパティーの設定:
(ストリング・タイプの) プロパティー名 | プロパティー値の Java タイプ | W3C XML 情報セットの表記規則を使用した WS-Addressing MAP の抽象名 | デフォルト値 |
---|---|---|---|
WSADDRESSING_DESTINATION_EPR | com.ibm.websphere.wsaddressing.EndpointReference | [destination] URI |
設定なし このプロパティーは API のものであることに注意してください。 |
WSADDRESSING_FROM_EPR | com.ibm.websphere.wsaddressing.EndpointReference | [source endpoint] | 設定なし |
WSADDRESSING_REPLYTO_EPR | com.ibm.websphere.wsaddressing.EndpointReference | [reply endpoint] | 'none' (メッセージが、無応答の片方向メッセージである場合) または設定なし。JAX-WS アプリケーションの両方向の非同期メッセージでは、このプロパティーは自動的に生成されます。 この状態で、このプロパティーの設定を試みた場合、javax.xml.ws.WebServiceException 例外がスローされます。 両方向の同期メッセージでは、エンドポイントの参照アドレスが匿名 URI である場合のみ、このプロパティーを設定できます。 アドレスが匿名 URI でない場合、javax.xml.ws.WebServiceException 例外がスローされます。 |
WSADDRESSING_FAULTTO_EPR | com.ibm.websphere.wsaddressing.EndpointReference | [fault endpoint] | 設定なし このプロパティーを JAX-WS アプリケーションの 両方向の非同期メッセージへ設定しようとすると、javax.xml.ws.WebServiceException 例外が スローされます。両方向の同期メッセージでは、エンドポイントの参照アドレスが匿名 URI である場合のみ、このプロパティーを設定できます。 アドレスが匿名 URI でない場合、javax.xml.ws.WebServiceException 例外がスローされます。 |
WSADDRESSING_RELATIONSHIP_SET | java.util.Set containing instances of com.ibm.wsspi.wsaddressing.Relationship | [relationship] | 設定なし |
WSADDRESSING_MESSAGE_ID | com.ibm.wsspi.wsaddressing.AttributedURI | [message id] | 固有値に生成および設定 |
WSADDRESSING_ACTION | com.ibm.wsspi.wsaddressing.AttributedURI | [action] | WS-Addressing 仕様に従って生成および設定 |
WSADDRESSING_OUTBOUND_NAMESPACE | ストリング | none | 指定されている場合は WSADDRESSING_DESTINATION_EPR プロパティーの WS-Addressing 名前空間、 そうでない場合はデフォルト名前空間 |
インバウンド・メッセージからの WS-Addressing メッセージ・アドレッシング・プロパティーの取得:
メッセージ・コンテキスト・プロパティー名 (タイプは String) | プロパティー値の Java タイプ | W3C XML の表記規則を使用した、WS-Addressing MAP の抽象名 |
---|---|---|
WSADDRESSING_INBOUND_TO | com.ibm.wsspi.wsaddressing.AttributedURI | [destination] |
特定のプロパティーなし。 EndpointReferenceManager.getReferenceParameter(QName name) メソッドを使用して関連のある MAP を取得。 | 任意のタイプ | [reference parameters]* |
WSADDRESSING_INBOUND_FROM_EPR | com.ibm.websphere.wsaddressing.EndpointReference | [source endpoint] |
WSADDRESSING_INBOUND_REPLYTO_EPR | com.ibm.websphere.wsaddressing.EndpointReference | [reply endpoint] |
WSADDRESSING_INBOUND_FAULTTO_EPR | com.ibm.websphere.wsaddressing.EndpointReference | [fault endpoint] |
WSADDRESSING_INBOUND_RELATIONSHIP | java.util.Set containing instances of com.ibm.wsspi.wsaddressing.Relationship | [relationship] |
WSADDRESSING_INBOUND_MESSAGE_ID | com.ibm.wsspi.wsaddressing.AttributedURI | [message id] |
WSADDRESSING_INBOUND_ACTION | com.ibm.wsspi.wsaddressing.AttributedURI | [action] |
WSADDRESSING_INBOUND_NAMESPACE | ストリング | 着信メッセージの WS-Addressing 名前空間 |