JAX-WS を使用した暗黙の SOAP ヘッダーの送信
既存の Java™ API for XML-Based Web Services (JAX-WS) Web サービス・クライアントで暗黙の SOAP ヘッダー内に値を送信できます。暗黙の SOAP ヘッダーを送信するためにクライアント・コードを変更すると、Web サービスの発信要求内にある特定の情報を送信できます。
始める前に
このタスクを実行するには、暗黙の SOAP ヘッダーを送信できるようにする Web サービス・クライアントが必要です。
- Web Services Description Language (WSDL) ファイルのバインディング内の SOAP ヘッダーとして宣言されているメッセージ・パーツ。ただし、メッセージ定義は WSDL ファイル内の portType エレメントによって参照されていない。
- WSDL ファイルに含まれていないエレメント。
ハンドラーおよびサービス・エンドポイントは、SOAP with Attachments API for Java (SAAJ) データ・モデルを使用して、暗黙的または明示的な SOAP ヘッダーを取り扱うことができます。
JAX-WS を使用する場合、操作できるヘッダーのタイプに制限はありません。
このタスクについて
クライアント・アプリケーションは、プロパティーを Dispatch または Proxy オブジェクトに設定して、暗黙の SOAP ヘッダーを送受信します。
手順
タスクの結果
JAX-WS Web サービス・クライアントが、暗黙の SOAP ヘッダーを送信するよう構成されました。
例
1 //Create the hashmaps for the outbound soap headers
2 Map<QName, List<String>> outboundHeaders=new HashMap<QName, List<String>>();
3
4 //Add "AtmUuid1" and "AtmUuid2" to the outbound map
5 List<String> list1 = new ArrayList<String>();
6 list1.add("<AtmUuid1 xmlns=¥"com.rotbank.security¥"><uuid>ROTB-0A01254385FCA09</uuid></AtmUuid1>");
7 List<String> list2 = new ArrayList<String>();
8 list2.add("<AtmUuid2 xmlns=¥"com.rotbank.security¥"><uuid>ROTB-0A01254385FCA09</uuid></AtmUuid2>"
9 outboundHeaders.put(new QName("com.rotbank.security", "AtmUuid1"), list1);
10 outboundHeaders.put(new QName("com.rotbank.security", "AtmUuid2"), list2);
11 // Set the outbound map on the request context
12 dispatch.getRequestContext().put("jaxws.binding.soap.headers.outbound");
13 // Invoke the remote operation
14 dispatch.invoke(parm1);
15 // Get the inbound header map from the response context
16 Map<QName,List<String>> inboundMap = dispatch.getResponseContext().get("jaxws.binding.soap.headers.outbound");
17 List<String> serverUuidList = inboundMap.get(new QName("com.rotbank.security","ServerUuid"));
18 String text = serverUiidList.get(0);
19 //Note: text now equals a XML object that contains a SOAP header:
21//"<y:ServerUuid xmlns:y=¥"com.rotbank.security¥"><:uuid>ROTB-0A03519322FSA01
22 </y:uuid></y:ServerUuid.");
行 2 では、アウトバウンド SOAP ヘッダー・マップを作成します。
行 5 から 10 まででは、AtmUuid1 および AtmUuid2 ヘッダー・エレメントがアウトバウンド・マップに追加されます。
行 12 では、アウトバウンド・マップが要求コンテキストに設定されます。これにより、操作が呼び出されたときに AtmUuid1 ヘッダーおよび AtmUuid2 ヘッダーが要求メッセージに追加されるようになります。
行 14 では、リモート操作を呼び出します。
行 15 では、アウトバウンド・ヘッダー・マップを取得します。
行 17 から 18 まででは、応答マップから ServerUuid ヘッダーを取得します。 このマップは、応答メッセージから SOAP ヘッダーにアクセスします。