Hitachi

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


36.7.2 SOAPヘッダが含まれる場合のハンドラの動作(Webサービスクライアント側)

SOAPヘッダが含まれるSOAPメッセージを受信した場合,SOAPヘッダのsoap:mustUnderstand属性の設定値によって,ハンドラの処理が異なります。soap:mustUnderstand属性が"1"の場合,およびsoap:mustUnderstand属性が"1"以外の場合に分けて処理内容を示します。

〈この項の構成〉

(1) soap:mustUnderstand属性が"1"の場合

soap:mustUnderstand属性が"1"のSOAPヘッダを持つSOAPメッセージを受信した場合,設定されたハンドラのどれか,またはWebサービスクライアント内で,そのSOAPヘッダを処理できれば,すべてのハンドラが呼び出されます。

ハンドラでSOAPヘッダを処理できる場合のハンドラの処理を次の図に示します。

図36‒20 ハンドラでSOAPヘッダを処理できる場合の処理(Webサービスクライアント側)

[図データ]

この図の例では,要素名tns:headerAを処理できるハンドラ3が設定されているとしています。このとき,tns:headerAのSOAPヘッダを受信した場合,ハンドラ3,ハンドラ2,およびハンドラ1のすべてのハンドラが呼び出されます。

Webサービス実装クラスでSOAPヘッダを処理できる場合のハンドラの処理を次の図に示します。

図36‒21 Webサービス実装クラスでSOAPヘッダを処理できる場合の処理(Webサービスクライアント側)

[図データ]

Webサービス実装クラスだけが要素名tns:headerCLを処理できるとした場合も,ハンドラで処理できる場合と同様にすべてのハンドラが呼び出されます。

soap:mustUnderstand属性が"1"のSOAPヘッダを持つSOAPメッセージを受信し,次のような場合はjavax.xml.ws.soap.SOAPFaultExceptionが返され,エラーとなります(KDJW10022-E)。

SOAPヘッダを処理できない場合のハンドラの処理は,次の図のようになります。

図36‒22 SOAPヘッダを処理できない場合のハンドラの処理(Webサービスクライアント側)

[図データ]

(2) soap:mustUnderstand属性が"1"以外の場合

soap:mustUnderstand属性が"1"以外の場合,設定されているすべてのハンドラが呼び出されます。

soap:mustUnderstand属性が"1"以外の場合,ハンドラの処理は次の図のようになります。

図36‒23 soap:mustUnderstand属性が"1"以外の場合のハンドラの処理(Webサービスクライアント側)

[図データ]

この図の例では,ハンドラもWebサービス実装クラスも要素tns:headerCLを処理できませんが,soap:mustUnderstand属性が"1"以外の場合はエラーにはならないで,すべてのハンドラが呼び出されます。