Hitachi

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


付録A.3 JAX-WSエンジンを利用したApplication Serverを08-00〜08-70から09-00以降にバージョンアップする場合

ここでは,JAX-WSエンジンを利用したApplication Serverを08-00〜08-70から09-00以降にバージョンアップインストールする場合の注意事項を説明します。

〈この項の構成〉

(1) SSL接続におけるホスト名検証

SSL接続におけるホスト名検証(Hostname Verification)は08-00〜08-70と09-00以降とで動作が異なります。

08-00〜08-70

WebサービスクライアントからSSLプロトコルに対応したWebサービスに接続する場合,エンドポイントアドレスに含まれるホスト名と,証明書のホスト名が一致しているかどうかは検証されません。

09-00以降

WebサービスクライアントからSSLプロトコルに対応したWebサービスに接続する場合,エンドポイントアドレスに含まれるホスト名と,証明書のホスト名が一致しているかどうかが検証されます。使用されるHostnameVerifierはJDKのデフォルトの実装です。JDKのデフォルトのHostnameVerifierの動作についてはJDKのドキュメントを参照してください。

09-00以降で08-00〜08-70と同様にSSL接続におけるホスト名検証が行われないようにするには,com.cosminexus.xml.ws.client.http.HostnameVerificationPropertyプロパティに"true"を設定してください。

(2) フォルトから例外クラスへのマッピング

cjwsimportコマンドを実行すると,WSDLのフォルトは,JAX-WS 2.2仕様に従ってJava型にマッピングされます。このとき,ラッパ例外クラスが生成される条件は,08-00〜08-70と09-00以降とで異なります。

08-00〜08-70

wsdl:portType要素とwsdl:binding要素の孫要素に,対応関係にあるwsdl:fault要素が定義されている場合,ラッパ例外クラスが生成されます。どちらか一方だけに定義されている場合は生成されません。

09-00以降

wsdl:portType要素の孫要素にwsdl:fault要素が定義されている場合,ラッパ例外クラスが生成されます。wsdl:binding要素の孫要素として,対応関係にあるwsdl:fault要素が定義されている必要はありません。

(3) javax.activation.DataHandlerオブジェクトの動作

javax.activation.DataHandlerオブジェクトは,08-00〜08-70と09-00以降とで動作が異なります。

08-00〜08-70

wsi:swaRef形式またはMTOM/XOP仕様形式の添付ファイルで受信したデータがjavax.activation.DataHandlerオブジェクトの場合,入力ストリームからすべてのデータを読み込みます。

09-00以降

wsi:swaRef形式またはMTOM/XOP仕様形式の添付ファイルで受信したデータがjavax.activation.DataHandlerオブジェクトの場合,入力ストリームから順次読み込みます。

wsi:swaRef形式またはMTOM/XOP仕様形式の添付ファイルの受信側では,javax.activation.DataHandlerオブジェクトが持つ入力ストリームからすべてのデータを読み込まないと受信処理が完了しないため,送信側の送信処理は受信側の受信処理が完了するまで待ち状態が続きます。

この状態を解消するためには,javax.activation.DataHandlerオブジェクトが持つjava.io.InputStreamオブジェクトからすべてのデータを読み込むか,javax.activation.DataHandlerクラスのwriteTo(java.io.OutputStream)メソッドを使用して入力ストリームのデータを出力ストリームに書き込む必要があります。

(4) javax.xml.transform.Sourceオブジェクトの動作

javax.xml.transform.Sourceオブジェクトは,08-00〜08-70と09-00以降とで動作が異なります。

08-00〜08-70

MTOM/XOP仕様形式の添付ファイルで受信したデータがjavax.xml.transform.Sourceオブジェクトの場合,入力ストリームからすべてのデータを読み込みます。

09-00以降

MTOM/XOP仕様形式の添付ファイルで受信したデータがjavax.xml.transform.Sourceオブジェクトの場合,入力ストリームから順次読み込みます。javax.xml.transform.Sourceオブジェクトは,JAXBがjavax.xml.transform.stream.StreamSourceオブジェクトに変換します。

MTOM/XOP仕様形式の添付ファイルの受信側では,javax.xml.transform.stream.StreamSourceオブジェクトが持つ入力ストリームからすべてのデータを読み込まないと受信処理が完了しないため,送信側の送信処理は受信側の受信処理が完了するまで待ち状態が続きます。

この状態を解消するためには,javax.xml.transform.stream.StreamSourceオブジェクトが持つjava.io.Readerオブジェクトからすべてのデータを読み込む必要があります。

(5) アドレッシング機能を使用している場合のサービス側ランタイムの動作の違い

アドレッシング機能を使用していて,次の条件がすべて重なった場合,サービス側ランタイムの動作が08-50〜08-70と09-00以降とで異なります。

08-50〜08-70

HTTPステータスコード:202を返します。

09-00以降

HTTPステータスコード:500を返します。

(6) MIME Multipart/Related構造のSOAPメッセージ受信時の動作の違い

1048576バイト以上のサイズのMIMEボディを含むMIME Multipart/Related構造のSOAPメッセージを受信した場合,JAX-WSエンジンの動作が08-00〜08-70と09-00以降とで異なります。

08-00〜08-70

1048576バイト以上のサイズのMIMEボディを含むMIME Multipart/Related構造のSOAPメッセージを受信した場合,JAX-WSエンジンはSOAPメッセージに含まれるMIMEボディを一時ファイルに出力しないで,Javaヒープに展開します。

09-00以降

1048576バイト以上のサイズのMIMEボディを含むMIME Multipart/Related構造のSOAPメッセージを受信した場合,JAX-WSエンジンはSOAPメッセージに含まれるMIMEボディを一時ファイルに出力します。

添付ファイルパートのMIMEボディに対応する一時ファイルは,com.sun.xml.ws.developer.StreamingDataHandler#close()メソッドで添付ファイルをクローズするときに削除されます。

詳細については,「10.24 MIME Multipart/Related構造のSOAPメッセージの受信」を参照してください。

(7) MIME Multipart/Related構造のSOAPメッセージ送信時の動作の違い

MTOM/XOP仕様形式の添付ファイル機能を使用してMIME Multipart/Related構造のSOAPメッセージを送信する場合,JAX-WSエンジンの動作が08-70と09-00以降とで異なります。

08-70

レスポンスメッセージは,常にMIME Multipart/Related構造のSOAPメッセージです。

09-00以降

Webサービス側で次の条件をすべて満たすリクエストメッセージを受信した場合,レスポンスメッセージに含まれるバイナリデータがBase64形式のデータになります。

  • リクエストメッセージのHTTPヘッダにあるAcceptフィールドにapplication/xop+xmlがない。

  • リクエストメッセージのルートパートにあるContent-Typeにapplication/xop+xmlがない。