ここでは、Java EE 7のWebサービス機能への移行について説明します。Java EE 7のWebサービス機能については、「Java EE 7 設計・構築・運用ガイド」の「Webサービスアプリケーションの開発」、「Webサービスクライアントアプリケーションの開発」を参照してください。
SOAPサービスは、“RPC/Encoded”の通信方式を採用していました。しかし、Java EE 7のWebサービスは、標準規約であるWS-I Basic Profileに対応するため、同規約で禁止されている“RPC/Encoded”の通信方式はサポートしていません。そのため、クライアント、サーバーの双方を同時に移行してください。
ここでは、SOAPサービスの固有機能を使用していた場合の移行について説明します
CORBA/SOAPゲートウェイ機能
Java EE 7のWebサービス機能では、CORBA/SOAPゲートウェイに相当する機能はありません。相当する機能をアプリケーションにて実装してください。
高信頼性Webサービス(SOAPメッセージの電子署名、XML暗号、SOAPメッセージに対するユーザ認証、送達保証機能)
Java EE 7のWebサービス機能では、サポートしていません。これらの機能を使用しない通常の通信方式に変更するか、または相当する機能をアプリケーションにて実装してください。
SOAPサービスのクライアントアプリケーションで使用したSSL通信の証明書環境は、以下に従って移行してください。
Interstage証明書環境とSSL定義名
Java EE 7のWebサービス機能では、Interstage証明書環境のkeystore (証明書、鍵ペア)のみが使用できます。SSL定義は使用できません。
クライアント認証を行っていた場合は、使用していたSSL定義で指定されていたサイト証明書のニックネームを直接指定します。詳細は、「Java EE 7 設計・構築・運用ガイド」の「SSL」の「WebサービスクライアントとWebサービス間の通信」を参照してください。
SOAP固有の証明書環境
SOAP固有の証明書環境の証明書(keystore)はそのまま使用可能です。以下に従って、keystoreを指定してください。
以下のファイル内に定義されているkeystoreパス名を参照して、copyコマンドなどで退避・移行します
%IS_HOME%F3FMsoap\conf\ssl.conf
/opt/FJSVsoap/conf/ssl.conf
待避・移行したkeystoreの情報を、移行先の環境のVMARGS環境変数、またはJVMオプションに設定します。指定方法の詳細は、「Java EE 7 設計・構築・運用ガイド」の「SSL」の「WebサービスクライアントとWebサービス間の通信」を参照してください。
アプリケーションの定義情報(Webサービス情報)
SOAPサービスでは、Webサービス情報として、アプリケーションの定義情報が管理されており、Webサービス情報編集ツール(GUI)、または、soapmodifyddコマンドと記述ファイルで環境に登録・更新を行います。
Java EE 7のWebサービス機能では、Webサービス情報に相当する情報は作成する必要はありません。アプリケーションをWARファイルに含めてください。詳細は、「Java EE 7 設計・構築・運用ガイド」の「Webサービスアプリケーションの開発」を参照してください。
アプリケーションの形態、配備方法
SOAPサービスでは、サーバアプリケーションは、任意のJARファイルにまとめるなどして、FTPなどでサーバに転送し、IJServer(Servletコンテナ)のクラスパスに設定する必要があります。また、あらかじめIJServerには、SOAPサービスの環境を構築しておく必要があります。
Java EE 7のWebサービス機能では、Webアプリケーションは、WARファイルに含め、通常のWARファイルと同様にIJServerクラスタに配備することで利用可能になります。IJServerクラスタに事前の環境設定は不要です。WebサービスアプリケーションのWARファイルの作成については、「Java EE 7 設計・構築・運用ガイド」の「Webサービスアプリケーションの開発」を参照してください。
Java EE 7のWebサービス機能を使用したアプリケーションに変更する必要があります。
SOAPサーバ
プログラムをJava EE 7のWebサービスのインタフェースに変更してください。詳細は、「Java EE 7 設計・構築・運用ガイド」の「Webサービスアプリケーションの開発」を参照してください。
SOAPクライアント
WSDLファイルから生成したスタブを使用する方式に変更してください。詳細は、「Java EE 7 設計・構築・運用ガイド」の「Webサービスクライアントアプリケーションの開発」を参照してください。
以下の機能は、Java EE 7のWebサービス機能では提供されていない、または、差異があります。これらの機能を利用している場合は、アプリケーションの修正が必要です。
Interstage V5.0以前のSOAPサービスAPI
パッケージ名がcom.fujitsu.interstage.soap.で始まるクラスは、Java EE 7のWebサービス機能では利用できません。これらを利用しているアプリケーションは、JAX-WSのAPIを使用したプログラムに変更してください。詳細は、「Java EE 7 設計・構築・運用ガイド」の「Webサービスアプリケーションの開発」、「Webサービスクライアントアプリケーションの開発」などを参照してください。
データ型
以下のデータ型は、Java EE 7のWebサービス機能ではサポートされていない、または差異があります。Java EE 7のWebサービスで利用できるデータ型に変更してください。詳細は、「Java EE 7 設計・構築・運用ガイド」の「Webサービスの通信で利用できるデータ型」を参照してください。
com.fujitsu.interstage.soapx.types パッケージに含まれるクラス
Java EE 7のWebサービス機能で利用できるデータ型に変更してください。
列挙型
Java5.0の列挙型に変更してください。
配列型
そのままでも利用できますが、型パラメタを指定したjava.util.Collectionクラスに変更することを推奨します。
java.util.Vector型
そのままでも利用できますが、扱うデータ型が1種類の場合は、型パラメタを指定したjava.util.Collectionクラスに変更することを推奨します。
添付ファイル型
Java EE 7のWebサービス機能の添付ファイル型に変更してください。
out/inoutパラメタとしての利用
javax.xml.ws.Holderクラスを使用してください。詳細は、「Java EE 7 設計・構築・運用ガイド」の「Webサービスの通信で利用できるデータ型 out/inoutパラメタとしての利用」を参照してください。
クライアントアプリケーションの開発
SOAPサービスでは、統合開発環境ツール(IDE)を利用したスタブ方式と上級者向けの複雑なAPIを使用するDII方式の2つの方式がサポートされています。Java EE 7のWebサービス機能では、開発容易性に優れたスタブ方式をサポートしています。SOAPサービスでDII方式のクライアントアプリケーションを利用していた場合は、SOAPのクライアント部分をスタブ方式に修正してください。SOAPサービスでスタブ方式のクライアントアプリケーションを利用していた場合は、スタブはJava EE 7のWebサービス機能で生成したものに置き換え、クライアントアプリケーションも若干修正する必要があります。詳細は、「Java EE 7 設計・構築・運用ガイド」の「Webサービスクライアントアプリケーションの開発」を参照してください。
サーバアプリケーションのライフサイクル
Java EE 7のWebサービス機能では、Webサービスアプリケーションのライフサイクルはコンテナで制御されます。SOAPサービスのWebサービス情報のparameterタグで指定する“scope”属性と同等の方法は提供されません。
Fault返却時のクライアントアプリケーションでの例外
SOAPサービスでは、WebサービスからFaultが返却されると、クライアントアプリケーションにはFault情報を取得できるAPIを持つjavax.xml.rpc.soap.SOAPFaultExceptionがthrowされました。
それに対して、Java EE 7のWebサービス機能では、Webサービス個別のJavaの例外(extends java.lang.Exception)はWSDLのfault要素にマッピングされます。クライアントアプリケーションには、その例外が、スタブの一部として生成され、throwされます。WSDLに定義されていないfaultはjavax.xml.ws.soap.SOAPFaultExceptionがthrowされます。
JavaパッケージとXMLの名前空間の対応
Java EE 7のWebサービス機能では、Webサービスアプリケーションで使用されるJavaのパッケージとXMLの名前空間が対応付けられます。
移行前の名前空間の利用を継続するには、javax.jws.WebServiceアノテーションのtargetNamespace属性を指定してください。
Java EE 7のWebサービス機能を使用したアプリケーションに変更する必要があります。
SOAPサーバ
エンドポイントの実装クラスを持つ方式に変更してください。詳細は、「Java EE 7 設計・構築・運用ガイド」の「Webサービスアプリケーションの開発」を参照してください。Webサービスのインターフェースを特定できない場合など、この方法で移行できない場合は、「通常の移行ができない場合」を参照してください。
通常のJava EE 7のWebサービスアプリケーションはRequestResponse方式になります。Oneway方式はプロトコル仕様上、エラー発生時のクライアント側への伝達が不十分であるため、RequestResponse方式への移行を推奨します。やむを得ず、Oneway方式を選択する場合は、@javax.jws.Onewayアノテーションを指定してください。アノテーションの詳細については、JAX-WS仕様を参照してください。
SOAPクライアント
WSDLファイルから生成したスタブを使用する方式に変更してください。詳細は、「Java EE 7 設計・構築・運用ガイド」の「Webサービスクライアントアプリケーションの開発」を参照してください。Webサービスのインターフェースを特定できない場合など、この方法で移行できない場合は、「通常の移行ができない場合」を参照してください。
通常の移行ができない場合
Java EE 7のWebサービス機能の通常のアプリケーションは、インターフェース(オペレーションの名前、パラメタ、データ型など)が決まっているWebサービスに対応しています。通常のアプリケーションでは対応できない場合は、SOAPサーバアプリケーションはjavax.xml.ws.Provider、SOAPクライアントアプリケーションはjavax.xml.ws.Dispatchを使用したアプリケーションに変更してください。詳細は、JAX-WSのJavadocを参照してください
クライアント認証で使用する証明書の選択 - setSSLAuthKeyAlias( String authKeyAlias )
Java EE 7のWebサービス機能では、設定する必要はありません。削除してください。
セション管理の利用 - setMaintainSession (boolean maintainsSession)
HTTPのセッション管理の利用は、WS-I Basic Profileで推奨されていません。利用の必要性を見直してください。必要な場合は、javax.xml.ws.BindingProviderオブジェクトを通じてリクエストコンテキストのプロパティとして指定できます。詳細は、「Java EE 7 設計・構築・運用ガイド」の「Webサービスクライアントアプリケーションの開発 HTTP関連のリクエストプロパティ設定」、およびJAX-WSのJavaDocを参照してください。
クライアントでの、プロキシを経由した接続の設定 - com.fujitsu.interstage.soapx.proxy
Java標準のネットワークのシステムプロパティで設定してください。詳細は、「Java EE 7 設計・構築・運用ガイド」の「Webサービスクライアントアプリケーションの開発 プロキシの利用」を参照してください。
クライアントでの、接続タイムアウトの設定 - com.fujitsu.interstage.soapx.socket.timeout
javax.xml.ws.BindingProviderオブジェクトを通じてリクエストコンテキストのプロパティとして指定できます。詳細は、「Java EE 7 設計・構築・運用ガイド」の「Webサービスクライアントアプリケーションの開発 HTTP関連のリクエストプロパティ設定」を参照してください。
Webサービスのユーザ名/パスワードを設定する方法 - javax.xml.rpc.securuty.auth
javax.xml.ws.BindingProviderオブジェクトを通じてリクエストコンテキストのプロパティとして指定できます。詳細は、「Java EE 7 設計・構築・運用ガイド」の「Webサービスクライアントアプリケーションの開発 HTTP関連のリクエストプロパティ設定」を参照してください。
voidの返り値のダミー返却 - com.fujitsu.interstage.soapx.simpleVoid
SOAPサービスでは、返り値がvoidのサーバアプリケーションについて、プロパティ指定により返り値としてダミーの値が返却するオプションが提供されていました。SOAPサービスで本オプションを使用していた場合は、アプリケーションをラップするなどして、返り値をvoidからintに変更して、ダミーの値0を常に返却するように変更してください。
SOAPのバージョン指定 - com.fujitsu.interstage.soapx.soap.version
SOAP1.1を利用する場合は、指定は不要です。SOAP1.2は、WS-I Basic Profile 1.1に準拠しないためJava EE 7のWebサービス機能では推奨しません。SOAP1.1へ変更してください。