19.2.5 メッセージコンテキストの使用
JAX-WS APIのサポート範囲内で,ハンドラ,Webサービスクライアント,およびWebサービスからメッセージコンテキストにアクセスできます。詳細を次に示します。
- ハンドラの場合
-
コールバックされるメソッド(handleMessageメソッドなど)のパラメタでメッセージコンテキストが渡されます。
- Webサービスクライアントの場合
-
javax.xml.ws.BindingProviderインタフェースのgetRequestContextメソッド,およびgetResponseContextメソッドでメッセージコンテキストのコピーにアクセスできます。
- Webサービスの場合
-
javax.xml.ws.WebServiceContextインタフェースのgetMessageContextメソッドでメッセージコンテキストにアクセスできます。
JAX-WS APIについては,JAX-WS 2.2仕様を参照してください。また,Application ServerのJAX-WS機能でのJAX-WS APIのサポート範囲については,「19.2.1 インタフェースおよびクラスの一覧(JAX-WS)」を参照してください。Application ServerのJAX-WS機能では,JAX-WS 2.2仕様で定義された標準のプロパティ,およびベンダ固有のプロパティをサポートしています。
JAX-WS 2.2仕様の9章に記載されている標準のプロパティについては,参照だけサポートしています。変更した場合の動作はサポートしていません。
(1) メッセージコンテキストのプロパティのサポート範囲
メッセージコンテキストのプロパティのサポート範囲を次の表に示します。
項番 |
プロパティ名 |
記載個所※1 |
必須※2 |
サポート |
||||||
---|---|---|---|---|---|---|---|---|---|---|
Webサービスクライアント |
Webサービス※5 |
ハンドラ |
||||||||
Webサービスクライアント側 |
Webサービス側 |
|||||||||
out※3 |
in※4 |
out※6 |
in※7 |
in※8 |
out※9 |
|||||
javax.xml.ws.handler.message |
||||||||||
1 |
.outbound※10 |
9.4.1.1 |
○ |
×※10 |
×※10 |
× |
△ |
△ |
△ |
△ |
javax.xml.ws.binding.attachments |
||||||||||
2 |
.inbound※10 |
9.4.1.1 |
○ |
×※10 |
×※10 |
△ |
△ |
△ |
△ |
△ |
3 |
.outbound※10 |
9.4.1.1 |
○ |
×※10 |
×※10 |
× |
△ |
△ |
△ |
△ |
javax.xml.ws.reference |
||||||||||
4 |
.parameters※10 |
9.4.1.1 |
○ |
×※10 |
×※10 |
△ |
△ |
△ |
△ |
△ |
javax.xml.ws.wsdl |
||||||||||
5 |
.description※10,※12 |
9.4.1.1 |
− |
×※10 |
×※10 |
×※11 |
×※11 |
×※11 |
×※11 |
×※11 |
6 |
.service※10,※12 |
9.4.1.1 |
− |
×※10 |
×※10 |
△ |
△ |
△ |
△ |
△ |
7 |
.port※10,※12 |
9.4.1.1 |
− |
×※10 |
×※10 |
△ |
△ |
△ |
△ |
△ |
8 |
.interface※10,※12 |
9.4.1.1 |
− |
×※10 |
×※10 |
△ |
△ |
△ |
△ |
△ |
9 |
.operation※10,※12,※13 |
9.4.1.1 |
− |
×※10 |
△※13 |
△ |
△ |
△ |
△ |
△ |
javax.xml.ws.http.request |
||||||||||
10 |
.headers |
9.4.1.1 |
○ |
◎※14 |
×※10 |
△ |
◎※14 |
△※15 |
△ |
△ |
11 |
.method※10,※11 |
9.4.1.1 |
○ |
×※10 |
×※10 |
△ |
△※15 |
△※15 |
△ |
△ |
12 |
.querystring※10,※11 |
9.4.1.1 |
○ |
×※10 |
×※10 |
△ |
△※15 |
△※15 |
△ |
△ |
13 |
.headers |
9.4.1.1 |
○ |
×※10 |
×※10 |
△※16 |
△※15 |
△※15 |
△※16 |
△※16 |
javax.xml.ws.http.response |
||||||||||
14 |
.headers※10 |
9.4.1.1 |
○ |
×※10 |
×※10 |
× |
△※17 |
△ |
△※17 |
△※17 |
15 |
.code※10 |
9.4.1.1 |
○ |
×※10 |
×※10 |
× |
△※18 |
△ |
△ |
△ |
javax.xml.ws.servlet |
||||||||||
16 |
.context※10,※11 |
9.4.1.1 |
○ |
×※10 |
×※10 |
△ |
△※15 |
△※15 |
△ |
△ |
17 |
.request※10 |
9.4.1.1 |
○ |
×※10 |
×※10 |
△ |
△※15 |
△※15 |
△ |
△ |
18 |
.response※10 |
9.4.1.1 |
○ |
×※10 |
×※10 |
△ |
△※15 |
△※15 |
△ |
△ |
javax.xml.ws.service.endpoint |
||||||||||
19 |
.address※19 |
4.2.1.1 |
○ |
◎ |
△ |
× |
◎ |
△ |
△ |
△ |
javax.xml.ws.security.auth |
||||||||||
20 |
.username |
4.2.1.1 |
○ |
◎ |
△ |
× |
◎ |
△ |
△ |
△ |
21 |
.password |
4.2.1.1 |
○ |
◎ |
△ |
× |
◎ |
△ |
△ |
△ |
javax.xml.ws.session |
||||||||||
22 |
.maintain |
4.2.1.1 |
○ |
◎ |
△ |
× |
◎ |
△ |
△ |
△ |
javax.xml.ws.soap.http.soapaction |
||||||||||
23 |
.use |
4.2.1.1 |
− |
×※20 |
×※20 |
×※20 |
×※20 |
×※20 |
×※20 |
×※20 |
24 |
.uri |
4.2.1.1 |
− |
×※20 |
×※20 |
×※20 |
×※20 |
×※20 |
×※20 |
×※20 |
com.cosminexus.jaxws |
||||||||||
25 |
.connect.timeout |
◎ |
△ |
× |
◎ |
△ |
△ |
△ |
||
26 |
.request.timeout |
◎ |
△ |
× |
◎ |
△ |
△ |
△ |
||
com.cosminexus.xml.ws.client.http |
||||||||||
27 |
.HostnameVerificationProperty |
◎※21 |
× |
× |
× |
× |
× |
× |
(2) メッセージコンテキスト使用時の注意事項
メッセージコンテキスト使用時の注意事項について説明します。
(a) Webサービスクライアント側のハンドラで操作しても意味のないメッセージコンテキストプロパティ
要求メッセージのHTTPメソッドのマップを保持するプロパティ(javax.xml.ws.http.request.methodプロパティなど)は,Webサービス側のハンドラで取得して意味のあるプロパティです。したがって,Webサービスクライアント側のハンドラでこのプロパティを参照した場合は常にnullが返されます。
(c) HTTPヘッダ
-
応答メッセージのHTTPヘッダのマップを保持するjavax.xml.ws.http.response.headersプロパティは,インバウンド時にWebサービスクライアント側のハンドラで取得して意味のあるプロパティです。したがって,Webサービス側のハンドラ,またはWebサービスクライアント側のアウトバウンド処理のハンドラで参照した場合は,常にnullが返されます。
-
メッセージコンテキストのjavax.xml.ws.http.request.headersプロパティ,およびjavax.xml.ws.http.response.headersプロパティをハンドラで参照した場合,取得されるマップ(Map<String,List<String>>オブジェクト)のキー値であるHTTPヘッダ名は,実際に送受信されるHTTPメッセージ(SOAPメッセージを含むHTTPメッセージ)に関係なく,常に先頭文字だけが大文字になります。
例)Content-type
(d) HTTPステータスコード
Webサービスクライアント側のアウトバウンドのハンドラは,HTTP通信が行われる前に処理されます。したがって,ハンドラからHTTPステータスコードを保持するjavax.xml.ws.http.response.codeプロパティを参照した場合は,常にnullが返されます。
(e) WebサービスクライアントでのHANDLERスコープのメッセージコンテキストプロパティ
標準のメッセージコンテキストプロパティとしてAPPLICATIONスコープおよびHANDLERスコープがありますが,Webサービスクライアントからは,APPLICATIONスコープのメッセージコンテキストプロパティだけ参照できます。したがって,Application ServerのJAX-WS機能では,「19.2.5(1) メッセージコンテキストのプロパティのサポート範囲」の表で注※9が付けられたプロパティは,Webサービスクライアントでは使用できません。これらのプロパティを参照した場合の動作は保証されません。
(f) SOAPActionヘッダに関連するメッセージコンテキストプロパティ
Application ServerのJAX-WS機能ではSOAPActionヘッダをサポートしていないため,javax.xml.ws.soap.http.soapaction.useプロパティとjavax.xml.ws.soap.http.soapaction.uriプロパティは使用できません。これらのプロパティを参照した場合の動作は保証されません。
(g) サービスエンドポイントのアドレスに指定するメッセージコンテキストのプロパティ
サービスエンドポイントのアドレスを指定するjavax.xml.ws.service.endpoint.addressプロパティには,空白および空文字は設定できません。空白または空文字を設定した場合の動作は保証されません。javax.xml.ws.service.endpoint.addressプロパティのその他の指定値については,「20.2.3 soap:address要素またはsoap12:address要素のlocation属性に指定できる値」を参照してください。
(h) WSDLに関連するメッセージコンテキストプロパティ
ディスパッチベースのWebサービスクライアントおよびプロバイダベースのWebサービスではWSDLファイルがないので,WSDLに関連するメッセージコンテキストプロパティを参照した場合は常にnullが返ります。
(i) WSDLオペレーションの名前に関連するメッセージコンテキストプロパティ
スタブベースのWebサービスクライアントでのjavax.xml.ws.wsdl.operationプロパティの参照は,javax.xml.ws.BindingProvider#getResponseContextで取得できる要求コンテキストだけでできます。javax.xml.ws.BindingProvider#getRequestContextで取得できる要求コンテキストで参照した場合は常にnullが返ります。また,javax.xml.ws.wsdl.operationプロパティに値を設定しても,送信するSOAPメッセージには影響を与えません。
(j) WS-RM 1.2機能を使用する場合のサービスエンドポイントのアドレスの指定
WS-RM 1.2機能を使用するWebサービスクライアントでは,最初のWebサービスの呼び出し前にサービスエンドポイントのアドレスを指定してください。最初の通信以降にサービスエンドポイントを変更すると,WS-RMの通信に失敗します。
(k) com.cosminexus.xml.ws.client.http.HostnameVerificationPropertyプロパティの設定方法
com.cosminexus.xml.ws.client.http.HostnameVerificationPropertyプロパティにメッセージコンテキストでtrueまたはfalseを設定する場合は,次の例のようにjava.lang.String型の文字列で設定してください。java.lang.String型の文字列以外で設定した場合の動作は保証されません。
context.put("com.cosminexus.xml.ws.client.http.HostnameVerificationProperty", "true");
(l) Webサービスでのメッセージコンテキストプロパティ
Webサービスでのメッセージコンテキストプロパティの,参照および変更について次に説明します。
-
HANDLERスコープであるJAX-WS 2.2仕様の9.4.1.1項で定義されている標準のメッセージコンテキストプロパティのうち,一部のメッセージコンテキストプロパティを参照できます。参照できるメッセージコンテキストプロパティについては,「19.2.5(1) メッセージコンテキストのプロパティのサポート範囲」の「表19-32 メッセージコンテキストのプロパティの一覧」を参照してください。
-
APPLICATIONスコープであるJAX-WS 2.2仕様の4.2.1.1項で定義されている標準のメッセージコンテキストプロパティやCJW固有のメッセージコンテキストプロパティについては,参照および変更できません。
-
APPLICATIONスコープのユーザ定義メッセージコンテキストプロパティの参照および変更ができます。