WSIFOperation - コンテキスト
Web サービス記述言語 (WSDL) はコンテキストを定義しませんが、 Web Services Invocation Framework (WSIF) を使用する多くの用途では、 サービスを呼び出すポートにコンテキストを渡すための機能が必要です。
例えば、SOAP over HTTP ポートでは、 HTTP ユーザー名とパスワードが必要になる場合があります。この情報は、 呼び出しに特有の情報ですが、サービスのパラメーターではありません。 一般に、コンテキストは名前と値のペアとして定義されます。 しかし、Web サービスは、XML スキーマ・タイプを使用してデータのタイプを定義することが多いため、WSIF は、WSIFMessage クラスが使用する表記と同じものを使用してコンテキストの名前と値のペアを表します。それは、すなわち名前付き部分のセットであり、それぞれの名前付き部分は、XML スキーマ・タイプのインスタンスと同等です。
WSIFOperation インターフェースの setContext メソッドと getContext メソッドを使用して、バインディングにコンテキスト情報を渡すことができます。 ポートの実装は、このコンテキストを使用して、 例えば SOAP ヘッダーを更新することができます。 ポートがコンテキストを使用する方法についての定義はありません。
setContext メソッドおよび getContext メソッドのパラメーターは WSIFMessage インターフェースであり、 このインターフェースには、コンテキスト情報を定義する名前付き部分があります。 WSIFConstants クラスは、コンテキスト WSIFMessage インターフェースに設定できる部分名の定数を定義します。
次のコード・フラグメントは、HTTP 基本認証用のユーザー名とパスワードを設定する方法を示しています。
// set a basic authentication header
WSIFMessage headers = new WSIFDefaultMessage();
headers.setObjectPart( WSIFConstants.CONTEXT_HTTP_USER, "user name" );
headers.setObjectPart( WSIFConstants.CONTEXT_HTTP_PSWD, "password" );
operation.setContext( headers );
WSIFOperation インターフェースでは、サポートされていないコンテキスト部分は無視されます。例えば、 前のコードは WSIF Java™ プロバイダーにより無視されます。
WSIFConstants クラスには、コンテキスト部分名に使用できる以下の定数が含まれています。
- CONTEXT_HTTP_USER
- CONTEXT_HTTP_PSWD
- CONTEXT_SOAP_HEADERS
HTTP ヘッダー値はタイプ String を持ち、 SOAP ヘッダー値はタイプ java.util.List (タイプ org.w3c.dom.Element の項目を含む) を持つことになります。