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) メッセージコンテキストのプロパティのサポート範囲
(2) メッセージコンテキスト使用時の注意事項

(1) メッセージコンテキストのプロパティのサポート範囲

メッセージコンテキストのプロパティのサポート範囲を次の表に示します。

表19-32 メッセージコンテキストのプロパティの一覧

項番プロパティ名記載個所※1必須※2サポート
WebサービスクライアントWebサービス※5ハンドラ
Webサービスクライアント側Webサービス側
out※3in※4out※6in※7in※8out※9
javax.xml.ws.handler.message
1.outbound※109.4.1.1×※10×※10×
javax.xml.ws.binding.attachments
2.inbound※109.4.1.1×※10×※10
3.outbound※109.4.1.1×※10×※10×
javax.xml.ws.reference
4.parameters※109.4.1.1×※10×※10
javax.xml.ws.wsdl
5.description※10,※129.4.1.1×※10×※10×※11×※11×※11×※11×※11
6.service※10,※129.4.1.1×※10×※10
7.port※10,※129.4.1.1×※10×※10
8.interface※10,※129.4.1.1×※10×※10
9.operation※10,※12,※139.4.1.1×※10※13
javax.xml.ws.http.request
10.headers9.4.1.1※14×※10※14※15
11.method※10,※119.4.1.1×※10×※10※15※15
12.querystring※10,※119.4.1.1×※10×※10※15※15
13.headers9.4.1.1×※10×※10※16※15※15※16※16
javax.xml.ws.http.response
14.headers※109.4.1.1×※10×※10×※17※17※17
15.code※109.4.1.1×※10×※10×※18
javax.xml.ws.servlet
16.context※10,※119.4.1.1×※10×※10※15※15
17.request※109.4.1.1×※10×※10※15※15
18.response※109.4.1.1×※10×※10※15※15
javax.xml.ws.service.endpoint
19.address※194.2.1.1×
javax.xml.ws.security.auth
20.username4.2.1.1×
21.password4.2.1.1×
javax.xml.ws.session
22.maintain4.2.1.1×
javax.xml.ws.soap.http.soapaction
23.use4.2.1.1×※20×※20×※20×※20×※20×※20×※20
24.uri4.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××××××
(凡例)
○:必須であることを示します。
-:必須でないことを示します。
◎:参照および変更できます。
△:参照だけできます。変更した場合の動作は保証されません。
×:参照および変更できません。
空欄:Application ServerのJAX-WS機能が提供するプロパティであるため,該当しないことを示します。
注※1
JAX-WS 2.2仕様で定義されている個所を示します。
注※2
JAX-WS 2.2仕様で必須かどうかを示します。
注※3
javax.xml.ws.BindingProvider#getRequestContextで取得できる要求コンテキストで,参照または変更できるかどうかを示します。
注※4
javax.xml.ws.BindingProvider#getResponseContextで取得できる要求コンテキストで,参照または変更できるかどうかを示します。
注※5
Webサービスコンテキストのインジェクションについては,「10.21.2 Webサービスコンテキストのインジェクション」を,Webサービスにおけるメッセージコンテキストプロパティについては,「19.2.5(2)(l) Webサービスでのメッセージコンテキストプロパティ」を参照してください。
注※6
Webサービスクライアントに関連づけられたハンドラで,アウトバウンド時(要求メッセージを送信するとき)に,参照または変更できるかどうかを示します。
注※7
Webサービスクライアントに関連づけられたハンドラで,インバウンド時(応答メッセージを受信するとき)に,参照または変更できるかどうかを示します。
注※8
Webサービス実装クラスまたはプロバイダ実装クラスに関連づけられたハンドラで,インバウンド時(要求メッセージを受信する時)に,参照または変更できるかどうかを示します。メッセージコンテキストプロパティ追加時の注意事項については,「10.21.2(2) ユーザ定義メッセージコンテキストプロパティ追加時の注意事項」を参照してください。
注※9
Webサービス実装クラスまたはプロバイダ実装クラスに関連づけられたハンドラで,アウトバウンド時(応答メッセージを送信するとき)に,参照または変更できるかどうかを示します。メッセージコンテキストプロパティ追加時の注意事項については,「10.21.2(2) ユーザ定義メッセージコンテキストプロパティ追加時の注意事項」を参照してください。
注※10
19.2.5(2)(e) WebサービスクライアントでのHANDLERスコープのメッセージコンテキストプロパティ」を参照してください。
注※11
常にnullが返されます。
注※12
19.2.5(2)(h) WSDLに関連するメッセージコンテキストプロパティ」を参照してください。
注※13
19.2.5(2)(i) WSDLオペレーションの名前に関連するメッセージコンテキストプロパティ」を参照してください。
注※14
HTTPレスポンス圧縮機能との連携時に使用するHTTPヘッダ「Accept-Encoding」,およびHTTPリクエストボディのgzip圧縮時に使用するHTTPヘッダ「Content-Encoding」の追加と参照だけできます。「Accept-Encoding」については,「10.18 HTTPレスポンス圧縮機能との連携」を参照してください。「Content-Encoding」については「10.17 HTTPリクエストボディのgzip圧縮」を参照してください。
注※15
19.2.5(2)(a) Webサービスクライアント側のハンドラで操作しても意味のないメッセージコンテキストプロパティ」を参照してください。
注※16
19.2.5(2)(b) パス情報」を参照してください。
注※17
19.2.5(2)(c) HTTPヘッダ」を参照してください。
注※18
19.2.5(2)(d) HTTPステータスコード」を参照してください。
注※19
19.2.5(2)(g) サービスエンドポイントのアドレスに指定するメッセージコンテキストのプロパティ」を参照してください。
注※20
19.2.5(2)(f) SOAPActionヘッダに関連するメッセージコンテキストプロパティ」を参照してください。
注※21
19.2.5(2)(k) com.cosminexus.xml.ws.client.http.HostnameVerificationPropertyプロパティの設定方法」を参照してください。

(2) メッセージコンテキスト使用時の注意事項

メッセージコンテキスト使用時の注意事項について説明します。

(a) Webサービスクライアント側のハンドラで操作しても意味のないメッセージコンテキストプロパティ

要求メッセージのHTTPメソッドのマップを保持するプロパティ(javax.xml.ws.http.request.methodプロパティなど)は,Webサービス側のハンドラで取得して意味のあるプロパティです。したがって,Webサービスクライアント側のハンドラでこのプロパティを参照した場合は常にnullが返されます。

(b) パス情報

javax.xml.ws.http.request.pathinfoプロパティは常にnullが保持されます。

(c) HTTPヘッダ
(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サービスでのメッセージコンテキストプロパティの,参照および変更について次に説明します。