付録A.1 バージョンアップインストール

SOAPアプリケーション開発支援機能/SOAP通信基盤,JAX-WS機能,およびJAX-RS機能は,Application Serverのインストール時に同時にインストールされます。

ここでは,旧バージョンがインストールされているマシンに対して,バージョンアップインストールする場合の手順および注意事項について説明します。

<この項の構成>
(1) J2EEサーバの移行
(2) Webサービスのアンデプロイ
(3) 動作環境の切り替え
(4) 08-00~08-70を09-00以降にバージョンアップする場合

(1) J2EEサーバの移行

Application Serverをバージョンアップインストールする場合,マニュアル「アプリケーションサーバ 機能解説 保守/移行編」の「10.3 アプリケーションサーバの移行の手順(更新インストールの場合)」またはマニュアル「アプリケーションサーバ 機能解説 互換編」の「3.9.2 アプリケーションサーバの移行の手順」に記載されている移行手順に従ってインストールしてください。

バージョンアップインストールすると,SOAPアプリケーション開発支援機能およびSOAP通信基盤を利用するように設定されます。

(2) Webサービスのアンデプロイ

Webサービス(またはSOAPアプリケーション)を移行する場合,あらかじめJ2EEサーバにデプロイされているWebサービス(またはSOAPアプリケーション)をアンデプロイしてください。

(3) 動作環境の切り替え

SOAPアプリケーション開発支援機能/SOAP通信基盤,JAX-WSエンジン,およびJAX-RSエンジンの切り替えは,J2EEサーバ用オプション定義ファイルで定義します。ここでは,J2EEサーバ用オプション定義ファイルの指定内容,および指定方法について説明します。

J2EEサーバ用オプション定義ファイルについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「2.3 usrconf.cfg(J2EEサーバ用オプション定義ファイル)」を参照してください。

注意事項
有効,無効にする行に矛盾がないように設定してください。例えば,「hitsaaj.jar」,「cjjaxws.jar」,および「cjjaxrs.jar」すべての行を無効にした場合,またはすべての行を有効にした場合の動作は保証されません。

J2EEサーバ用オプション定義ファイルの編集方法を説明します。

ここで説明するどの方法でも,J2EEサーバ用オプション定義ファイルを編集(保存)したあとに,J2EEサーバを再起動してください。J2EEサーバを再起動しない場合は,編集内容が反映されません。

(a) 直接編集する場合

直接編集する場合,次の場所に格納されたJ2EEサーバ用オプション定義ファイルをテキストエディタで開き,内容を変更します。

<Application Serverのインストールディレクトリ>/CC/server/usrconf/ejb/<J2EEサーバ名>/usrconf.cfg

(b) Management Serverの運用管理ポータルを利用する場合

Management Serverの運用管理ポータルを利用する場合,[J2EEコンテナの設定]画面の「拡張パラメタ」で設定します。

JAX-WSエンジンおよびJAX-RSエンジンを利用する場合の設定例を次に示します。

図A-1 運用管理ポータルによるJAX-WSエンジンおよびJAX-RSエンジンの設定例

[図データ]

SOAPアプリケーション開発支援機能およびSOAP通信基盤を利用する場合の設定例を次に示します。

図A-2 運用管理ポータルによるSOAPアプリケーション開発支援機能/SOAP通信基盤の設定例

[図データ]

運用管理ポータルの[J2EEコンテナの設定]画面については,マニュアル「アプリケーションサーバ 運用管理ポータル操作ガイド」の「10.9.2 J2EEコンテナの設定」を参照してください。

(c) Smart Composer機能を利用する場合

Smart Composer機能を利用する場合は,簡易構築定義ファイルに,J2EEの拡張パラメタとして追加します。Smart Composer機能については,マニュアル「アプリケーションサーバ システム構築・運用ガイド」を参照してください。簡易構築定義ファイルについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「4. Smart Composer機能で使用するファイル」を参照してください。

JAX-WSエンジンおよびJAX-RSエンジンを利用する場合の設定例を次に示します。

<param>
<param-name>add.class.path</param-name>
<param-value>&lt;cosminexus.home&gt;¥jaxws¥lib¥cjjaxws.jar</param-value>
</param>
<param>
<param-name>add.class.path</param-name>
<param-value>&lt;cosminexus.home&gt;¥jaxrs¥lib¥cjjaxrs.jar</param-value>
</param>

SOAPアプリケーション開発支援機能およびSOAP通信基盤を利用する場合の設定例を次に示します。

<param>
<param-name>add.class.path</param-name>
<param-value>&lt;cosminexus.home&gt;¥c4web¥lib¥hitsaaj.jar</param-value>
</param>

(4) 08-00~08-70を09-00以降にバージョンアップする場合

Application Serverを08-00~08-70から09-00以降にバージョンアップインストールする場合の注意事項を説明します。

(a) 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"を設定してください。
(b) フォルトから例外クラスへのマッピング

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要素が定義されている必要はありません。
(c) 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)メソッドを使用して入力ストリームのデータを出力ストリームに書き込む必要があります。
(d) 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オブジェクトからすべてのデータを読み込む必要があります。
(e) cjaptコマンドを使用した場合の動作の違い

次の条件がすべて重なった状態でcjaptコマンドを使用した場合,08-00~08-70と09-00以降とで動作が異なります。

08-00~08-70
標準エラー出力とログにエラーメッセージが出力され,処理が終了されます(KDJW61093-E)。
09-00以降
正常終了します。

実装例を次に示します。

親のWebサービス実装クラス

@WebService
@SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL,
parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
public class AddNumbersParentImpl {
   ・・・
   @WebMethod
   public int addNumbers1(int number1, int number2) {
・・・
   }
   public int addNumbers2(int number1, int number2) {
・・・
   }
}

子のWebサービス実装クラス

@WebService
@SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL,
parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
public class AddNumbersChildImpl extends AddNumbersParentImpl {
・・・
   @WebMethod(exclude=true)
   public int addNumbers1(int number1, int number2) {
・・・
   }
}

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

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

08-50~08-70
HTTPステータスコード:202を返します。
09-00以降
HTTPステータスコード:500を返します。
(g) 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メッセージの受信」を参照してください。