機能の確認
以下の機能は、J2EEのWebサービス機能では提供されていません。J2EEのWebサービス機能へ移行する場合は、アプリケーションにて相当する機能を実現するか、これらの機能を利用しないように変更してください。
CORBA/SOAPゲートウェイ機能
高信頼性Webサービス(SOAPメッセージの電子署名、XML暗号、SOAPメッセージに対するユーザ認証、送達保証機能)
Messaging方式のアプリケーション
V5.0以前のSOAPサービスAPI(パッケージ名が com.fujitsu.interstage.soap. で始まるクラス)
クライアントパッケージ環境でのSSL機能
SOAP1.2
アプリケーションの移行
以下の機能は、J2EEのWebサービス機能では提供されていない、または、差異があります。これらの機能を利用している場合は、アプリケーションの修正が必要です。
一部のデータ型(Enumerationなど)
SOAPサービス固有API(名前が com.fujitsu.interstage.soapx. で始まるクラス、またはプロパティ)
以下のデータ型は、J2EEのWebサービス機能ではサポートされません。
列挙型
java.util.Vector型
com.fujitsu.interstage.soapx.typesパッケージに含まれるクラス
SOAPサービスでこれらのデータ型を利用していた場合は、「第18章 Webサービスの開発」を参照して、これらのデータ型を利用しないインタフェースに変更してください。
以下のデータ型は、XMLのデータ型とのマッピングがJ2EEのWebサービス機能とSOAPサービスで差異があります。
Webサービスアプリケーションのパラメタに使用するJavaのデータ型 | XMLで使用されるデータ型 | |
---|---|---|
SOAPサービス | J2EEのWebサービス機能 | |
byte[] | xsd:byteの配列 | xsd:base64Binary |
java.math.BigDecimal | xsd:decimal | soapenc:decimal (注) |
java.math.BigInteger | xsd:integer | soapenc:integer (注) |
注) encoded利用の場合のデータ型です。
SOAPサービスでこれらのデータ型を利用していた場合は、「第18章 Webサービスの開発」を参照して、アプリケーションまたはインタフェースを変更してください。
構造体型のpublicフィールドと、フィールド名と同名のプロパティのsetメソッドまたはgetメソッドの片方のみを持つデータ型は、J2EEのWebサービス機能とSOAPサービスで扱いに差異があります。以下について確認し、該当する場合は必要に応じてデータ型を修正してください。
フィールド名と同名のプロパティのsetメソッドのみを持ち、getメソッドを持たない場合は、J2EEのWebサービス機能では該当のフィールド(プロパティ)は値取得不可のプロパティとみなされて、値は送信されません。
フィールド名と同名のプロパティのgetメソッドのみを持ち、setメソッドを持たない場合は、J2EEのWebサービス機能では該当のフィールド(プロパティ)は値設定不可のプロパティとみなされて、データを受信した場合でも値が設定されません。
例
下記のデータ型を使用した場合、J2EEのWebサービス機能ではnameの値は送信されません。
public class Human { public String name; //nameのpublicフィールド public void setName(String n) { name = n; } //nameのsetメソッド ///// ※getName()メソッドなし ////// public Human() { } public Human(String n, int a){ name=n; age=a; } }
添付ファイル型のデータを使用している場合、以下について確認し対応を行ってください。
SOAPサービスの添付ファイル機能は、WS-I Attachemets Profileに対応していません。移行前のSOAPサービスと同様の通信方法にするには、添付ファイルに対応するXMLのデータ型にはapachesoap名前空間のXMLデータ型を使用してください。添付ファイルに対応するXMLのデータ型の種類は、iswsgen wsdlコマンドの-attachmentsTypeオプションで指定します。詳細については、「リファレンスマニュアル(コマンド編)」の「iswsgen」を参照してください。
SOAPサーバアプリケーションでは、受信した添付ファイルのパラメタをリクエスト処理完了後も保持することが可能でした。Interstage Webサービスの既定では、リクエスト処理完了後は、添付ファイルのパラメタはリソース解放のため利用できなくなる場合があります。リクエスト処理完了後もパラメタのまま保持する必要がある場合は、「レスポンス返却時の、Webサービスアプリケーションで受信した添付ファイルデータ削除(資源解放)」の設定を変更してください。詳細については、「19.3 Webサービス設定ファイル」を参照してください。
プログラム修正 | 機能 | SOAPサービス | J2EEのWebサービス機能 |
---|---|---|---|
推奨 | クライアントでの、プロキシを経由した接続の設定 | 名前が com.fujitsu.interstage.soapx.proxy で始まるプロパティをプログラムで設定します。 | 「第19章 Webサービスの運用」を参照してください。 |
推奨 | クライアントでの、接続タイムアウトの設定 | com.fujitsu.interstage.soapx.socket.timeoutプロパティをプログラムで設定します。デフォルトは5分です。 | 「第18章 Webサービスの開発」を参照してください。デフォルトは10分です。 |
必須 | クライアントでの、セション継続の設定 | com.fujitsu.interstage.soapx.client.Stub#setMaintainSession()メソッドで設定します。 | 「第18章 Webサービスの開発」を参照してください。 |
必須 | JAX-RPC規定(javax.xml.rpc.holdersパッケージ)以外のHolderクラス | com.fujitsu.interstage.soapx.holdersパッケージでHolderクラスが提供されています。 | javax.xml.rpc.holders.Holderインタフェースをimplementsして、アプリケーションで作成してください。 |
プログラム修正 | 機能 | SOAPサービス | J2EEのWebサービス機能 |
---|---|---|---|
必須 | サーバアプリケーションのライフサイクルの設定 | Webサービス情報に設定します。“Application”、“Session”、“Request”からサーバアプリケーションのインスタンスの管理方式を選択します。 | SOAPサービスにおいてApplicationが指定された場合と同等になります。リクエスト単位でサーバアプリケーションのインスタンス化が必要な場合、アプリケーションをラップする新たなアプリケーションクラスを作成してインスタンス生成と委譲するなどの対処が必要です。セションを利用する場合、アプリケーションのフィールドではなく、HttpSessionオブジェクトに情報を格納します。詳細については、「第18章 Webサービスの開発」を参照してください。 |
SOAPサービスでは、統合開発環境ツール(IDE)を利用したスタブ方式と上級者向けの複雑なAPIを使用するDII方式の2つの方式がサポートされています。J2EEのWebサービス機能では、開発容易性に優れたスタブ方式をInterstage Application Serverとしてサポートしています。SOAPサービスでDII方式のクライアントアプリケーションを利用していた場合は、SOAPのクライアント部分をスタブ方式に修正してください。
また、スタブはJ2EEのWebサービス機能で生成したものに置き換える必要があります。
プログラム修正 | 機能 | SOAPサービス | J2EEのWebサービス機能 |
---|---|---|---|
必須 | ロケータオブジェクト(Serviceオブジェクト)の取得 | javax.xml.rpc.ServiceFactory# createService(javax.xml.namespace.QName serviceName)メソッドを使用します。 | javax.xml.rpc.ServiceFactory#loadService(java.lang.Class generatedServiceClass)メソッドを使用します。 |
SOAPサービスのRPCアプリケーションでは、通信はWSDLのrpc/encoded相当の方式で行われます。J2EEのWebサービス機能は、rpc/encoded、rpc/literal、document/literalのWSDLをサポートしており、デフォルトはdocument/literalです。
またJ2EEのWebサービス機能ではJavaパッケージと名前空間名の対応、ユーザ定義型のJavaクラス名とXMLデータ型のローカル名の対応、および、オペレーションのパラメタの名前にデフォルトを持っています。デフォルトと移行前の値が異なる場合はiswsgenコマンドに対する指定が必要です。オペレーションのパラメタの名前(rpc/encodedのWSDLのpart名)は、WSDLの該当部分を書き換えてください。
詳細については、「リファレンスマニュアル(コマンド編)」の「iswsgen」を参照してください。
J2EEのWebサービス機能では、Webサービスアプリケーションのメソッドのオーバーロード(オペレーション名が同一で引数が異なる複数のメソッド)をサポートしていません。SOAPサービスでメソッドのオーバーロードを利用していた場合は、アプリケーションをラップするなどして、メソッドのオーバーロードを使用しないインタフェースに変更してください。
SOAPサービスでは、返り値がvoidのアプリケーションについて、プロパティ指定により返り値としてダミーの値が返却するオプションが提供されていました。SOAPサービスで本オプションを使用していた場合は、アプリケーションをラップするなどして、返り値をvoidからintに変更して、ダミーの値0を常に返却するように変更してください。
J2EEのWebサービス機能では、Webサービスアプリケーションで使用されるJavaのパッケージとXMLの名前空間が対応付けられます。
移行前の名前空間の利用を継続するには、「リファレンスマニュアル(コマンド編)」の「iswsgen」を参照し、オプションで名前空間名を指定してください。Javaのパッケージと名前空間が1対1に対応していない場合は、既存のクラスをラップするクラスを作成するなどして1対1に対応させてください。
SOAPサービスでは、WebサービスからFaultが返却されると、クライアントアプリケーションにはFault情報を取得できるAPIを持つjavax.xml.rpc.soap.SOAPFaultExceptionがthrowされました。
それに対して、J2EEのWebサービス機能では、通常、その様なAPIを持たないjava.rmi.RemoteExceptionがthrowされます。同例外では、出力されるスタックトレースにFault情報が含まれています。
クライアントアプリケーションでは、両方の例外をcatchしてログにスタックトレース・Fault情報を出力するようにしてください。
定義の移行・アプリケーションの管理
SOAPサービスでは、サーバアプリケーションは、任意のJARファイルにまとめるなどして、FTPなどでサーバに転送し、IJServer(Servletコンテナ)のクラスパスに設定する必要があります。また、あらかじめIJServerにはSOAPサービスの環境を構築しておく必要があります。
J2EEのWebサービス機能では、WebサービスアプリケーションはWARファイルに含め、通常のWARファイルと同様にInterstage管理コンソールなどからIJServerに配備することで利用可能になります。IJServerに事前の特別の環境構築は不要です。WebサービスアプリケーションのWARファイルの作成については、「第18章 Webサービスの開発」を参照してください。
SOAPサービスでは、Webサービス情報として、アプリケーションの定義情報が管理されており、Webサービス情報編集ツール(GUI)またはsoapmodifyddコマンドと記述ファイルで環境に登録・更新を行います。
J2EEのWebサービス機能では、Webサービス情報に相当する情報をdeployment descriptorとして記述し、アプリケーションのWARファイルに含めます。deployment descriptorの記述およびWARファイルの作成については、「第18章 Webサービスの開発」を参照してください。
インストール
Interstage V8.0、V9.0では、J2EEはInterstage Application Serverのインストールで、標準でインストールされていましたが、Interstage 10.0以降では、標準ではインストールされません。インストーラのメニューから「J2EE互換」を明示的に選択してインストールしてください。