Application Serverをバージョンアップインストールする場合,マニュアル「アプリケーションサーバ 機能解説 保守/移行編」の「10.3 アプリケーションサーバの移行の手順(更新インストールの場合)」またはマニュアル「アプリケーションサーバ 機能解説 互換編」の「3.9.2 アプリケーションサーバの移行の手順」に記載されている移行手順に従ってインストールしてください。
バージョンアップインストールすると,SOAPアプリケーション開発支援機能およびSOAP通信基盤を利用するように設定されます。
SOAPアプリケーション開発支援機能/SOAP通信基盤,JAX-WSエンジン,およびJAX-RSエンジンの切り替えは,J2EEサーバ用オプション定義ファイルで定義します。ここでは,J2EEサーバ用オプション定義ファイルの指定内容,および指定方法について説明します。
J2EEサーバ用オプション定義ファイルについては,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「2.3 usrconf.cfg(J2EEサーバ用オプション定義ファイル)」を参照してください。
- JAX-WSエンジンおよびJAX-RSエンジンを利用する場合
JAX-WSエンジンおよびJAX-RSエンジンを利用する場合,J2EEサーバ用オプション定義ファイルのadd.class.pathの「cjjaxws.jar」と「cjjaxrs.jar」の行を有効にし,「hitsaaj.jar」の行を無効にします。次の例に従って定義してください。
...
#add.class.path=<cosminexus.home>¥c4web¥lib¥hitsaaj.jar
add.class.path=<cosminexus.home>¥jaxws¥lib¥cjjaxws.jar
add.class.path=<cosminexus.home>¥jaxrs¥lib¥cjjaxrs.jar
... |
- SOAPアプリケーション開発支援機能/SOAP通信基盤を利用する場合
SOAPアプリケーション開発支援機能/SOAP通信基盤を利用する場合,J2EEサーバ用オプション定義ファイルのadd.class.pathの「hitsaaj.jar」の行を有効にし,「cjjaxws.jar」の行を無効にします。次の例に従って定義してください。
...
add.class.path=<cosminexus.home>¥c4web¥lib¥hitsaaj.jar
#add.class.path=<cosminexus.home>¥jaxws¥lib¥cjjaxws.jar
... |
- 注意事項
- 有効,無効にする行に矛盾がないように設定してください。例えば,「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エンジンの設定例
![[図データ]](figure/zu0a0100.gif)
SOAPアプリケーション開発支援機能およびSOAP通信基盤を利用する場合の設定例を次に示します。
図A-2 運用管理ポータルによるSOAPアプリケーション開発支援機能/SOAP通信基盤の設定例
![[図データ]](figure/zu0a0200.gif)
運用管理ポータルの[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><cosminexus.home>¥jaxws¥lib¥cjjaxws.jar</param-value>
</param>
<param>
<param-name>add.class.path</param-name>
<param-value><cosminexus.home>¥jaxrs¥lib¥cjjaxrs.jar</param-value>
</param> |
SOAPアプリケーション開発支援機能およびSOAP通信基盤を利用する場合の設定例を次に示します。
<param>
<param-name>add.class.path</param-name>
<param-value><cosminexus.home>¥c4web¥lib¥hitsaaj.jar</param-value>
</param> |
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以降とで動作が異なります。
- document/literalスタイルを指定している。
- 暗黙のSEIがあるWebサービス実装クラスである。
- Webサービス実装クラスが別のWebサービス実装クラスを継承し,親クラスのメソッドをオーバーライドしている。
- 親のWebサービス実装クラスは二つ以上のpublicメソッドが存在し,最初のpublicメソッドにjavax.jws.WebMethodアノテーションをアノテートしている。
- 親のWebサービス実装クラスにある2番目以降のpublicメソッドにjavax.jws.WebMethodアノテーションをアノテートしていない。
- 子のWebサービス実装クラスで最初のpublicメソッドをオーバライドし,javax.jws.WebMethod(exclude=true)アノテーションをアノテートしている。
- 子のWebサービス実装クラスで親のWebサービス実装クラスにある2番目以降のpublicメソッドをオーバライドしていない。
- 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以降とで異なります。
- SOAP 1.1仕様のメッセージである。
- リクエストメッセージのアドレッシングヘッダにwsa:ReplyTo要素が存在しない。
- リクエストメッセージのアドレッシングヘッダにwsa:FaultTo要素が存在し,WebサービスのURIを設定している。
- サービス側でエラーが発生し,SOAPフォルトを返信する。
- 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メッセージの受信」を参照してください。