既存の Web サービス・クライアントで暗黙の SOAP ヘッダー内から値を取得できます。暗黙の SOAP ヘッダーを受信するためにクライアント・コードを変更すると、着信 Web サービス応答内の固有の情報を受信できます。
始める前に
このタスクを完了するには、暗黙の SOAP ヘッダーを受信するために使用可能にできる Web サービス・クライアントが必要となります。
暗黙の SOAP ヘッダー は、以下の説明の 1 つに適合する SOAP ヘッダーです。
- WSDL ファイルのバインディング内の SOAP ヘッダーとしてメッセージ・パーツが宣言されているが、メッセージ定義は、WSDL ファイル内の portType によって参照されていない。
- WSDL ファイルに含まれていないエレメント。
ハンドラーとサービス・エンドポイントは、SOAP with Attachments API for Java (SAAJ)
データ・モデルを使用する暗黙または明示的な SOAP ヘッダーを取り扱うことができます。
protected の SOAP ヘッダーを取り扱うことはできません。
その所有コンポーネント (例えば、Web サービス・セキュリティー) によって protected に宣言されている SOAP
ヘッダーは、クライアント・アプリケーションからはアクセスできません。
protected の SOAP ヘッダーを操作しようとすると、例外が発生します。
このタスクについて
クライアント・アプリケーションは、プロパティーを Stub または Call オブジェクトに設定して、暗黙の SOAP ヘッダーを送受信します。
クライアント・コードは、以下のように変更できます。
プロシージャー
- java.util.HashMap を作成します。
- クライアントが受信しようとするそれぞれの暗黙の SOAP ヘッダーごとに、エントリーを HashMap に追加します。
HashMap エントリー・キーは、SOAP ヘッダーの QName です。
HashMap エントリー値は null です。
- HashMap エントリーを Stub オブジェクトまたは Call オブジェクト上に設定します。
プロパティー名は、com.ibm.websphere.webservices.Constants.RESPONSE_SOAP_HEADERS です。
このプロパティーの値は、HashMap です。
- Stub オブジェクトまたは Call オブジェクトに対して、リモート・メソッド呼び出しを発行します。
Web サービス・エンジンは、Web サービス応答メッセージから指定された応答ヘッダーを抽出して、それを HashMap
に挿入します。
リモート・メソッドが戻ったあとで、応答ヘッダーは HashMap からアクセス可能になります。
以下のいずれかが true の場合、
JAXRPCException が発生します。
- HashMap が QName ではないキーを含んでいる。
- HashMap が、独自のコンポーネントによって保護されていることが宣言されている SOAP ヘッダーを表すキーを含んでいる。
結果
Web サービス・クライアントが、暗黙の SOAP ヘッダーから値を受信するように構成されました。