既存の 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 エントリー値は、SAAJ SOAPElement オブジェクト、
または SOAP ヘッダー・エレメント全体の XML テキストを含むストリングのいずれかです。
- HashMap をプロパティーとして Stub または Call オブジェクトに設定します。
プロパティー名は、
com.ibm.websphere.webservices.Constants.REQUEST_SOAP_HEADERS です。
このプロパティーの値は HashMap です。
- Stub または Call オブジェクトを使用してリモート・メソッドを発行します。
HashMap 内のヘッダーは出力メッセージ内で送信されます。
以下のいずれかが true の場合、
JAXRPCException が発生します。
- HashMap に QName でないキーが含まれているか、
または HashMap にストリングまたは SOAPElement でない値が含まれています。
- HashMap が、独自のコンポーネントによって保護されていることが宣言されている SOAP ヘッダーを表すキーを含んでいます。
結果
Web サービス・クライアントが、暗黙の SOAP ヘッダーを送信するよう構成されました。