Hitachi

Cosminexus V11 アプリケーションサーバ Webサービス開発ガイド


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) メッセージコンテキストのプロパティのサポート範囲

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

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

項番

プロパティ名

記載個所※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

×

×

×

×

×

×

(凡例)

○:必須であることを示します。

−:必須でないことを示します。

◎:参照および変更できます。

△:参照だけできます。変更した場合の動作は保証されません。

×:参照および変更できません。

空欄: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ヘッダ

  • 応答メッセージの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スコープのユーザ定義メッセージコンテキストプロパティの参照および変更ができます。