ページの先頭行へ戻る
Interstage Application Server V12.3.0 J2EE ユーザーズガイド(旧版互換)
FUJITSU Software

31.9.1 J2EEのWebサービス機能への移行

ここでは、J2EEのWebサービス機能への移行について説明します。


機能の確認

以下の機能は、J2EEのWebサービス機能では提供されていません。J2EEのWebサービス機能へ移行する場合は、アプリケーションにて相当する機能を実現するか、これらの機能を利用しないように変更してください。


アプリケーションの移行

以下の機能は、J2EEのWebサービス機能では提供されていない、または、差異があります。これらの機能を利用している場合は、アプリケーションの修正が必要です。


一部のデータ型
  サポートされないデータ型

以下のデータ型は、J2EEのWebサービス機能ではサポートされません。

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サービスの開発」を参照して、アプリケーションまたはインタフェースを変更してください。


  構造体型とBean型の混成とみなされるデータ型の注意

構造体型のpublicフィールドと、フィールド名と同名のプロパティのsetメソッドまたはgetメソッドの片方のみを持つデータ型は、J2EEのWebサービス機能とSOAPサービスで扱いに差異があります。以下について確認し、該当する場合は必要に応じてデータ型を修正してください。

下記のデータ型を使用した場合、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サービス固有API

プログラム修正

機能

SOAPサービス

J2EEのWebサービス機能

推奨

クライアントでの、プロキシを経由した接続の設定

名前が com.fujitsu.interstage.soapx.proxy で始まるプロパティをプログラムで設定します。

第19章 Webサービスの運用」を参照してください。
(SOAPサービスでの設定方法は無視されます)

推奨

クライアントでの、接続タイムアウトの設定

com.fujitsu.interstage.soapx.socket.timeoutプロパティをプログラムで設定します。デフォルトは5分です。

第18章 Webサービスの開発」を参照してください。デフォルトは10分です。
(SOAPサービスでの設定方法は無視されます)

必須
(該当する場合)

クライアントでの、セション継続の設定

com.fujitsu.interstage.soapx.client.Stub#setMaintainSession()メソッドで設定します。

第18章 Webサービスの開発」を参照してください。
(SOAPサービスでの設定メソッドは提供されません)

必須
(該当する場合)

JAX-RPC規定(javax.xml.rpc.holdersパッケージ)以外のHolderクラス

com.fujitsu.interstage.soapx.holdersパッケージでHolderクラスが提供されています。

javax.xml.rpc.holders.Holderインタフェースをimplementsして、アプリケーションで作成してください。


“Application”以外のサーバアプリケーションのライフサイクル

プログラム修正

機能

SOAPサービス

J2EEのWebサービス機能

必須
(該当する場合)

サーバアプリケーションのライフサイクルの設定

Webサービス情報に設定します。“Application”、“Session”、“Request”からサーバアプリケーションのインスタンスの管理方式を選択します。

SOAPサービスにおいてApplicationが指定された場合と同等になります。リクエスト単位でサーバアプリケーションのインスタンス化が必要な場合、アプリケーションをラップする新たなアプリケーションクラスを作成してインスタンス生成と委譲するなどの対処が必要です。セションを利用する場合、アプリケーションのフィールドではなく、HttpSessionオブジェクトに情報を格納します。詳細については、「第18章 Webサービスの開発」を参照してください。
(SOAPサービスでの設定方法は提供されません)


クライアントアプリケーションの開発方式

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)メソッドを使用します。


デフォルトのstyle/useなど

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サービスでメソッドのオーバーロードを利用していた場合は、アプリケーションをラップするなどして、メソッドのオーバーロードを使用しないインタフェースに変更してください。


voidの返り値のダミー返却

SOAPサービスでは、返り値がvoidのアプリケーションについて、プロパティ指定により返り値としてダミーの値が返却するオプションが提供されていました。SOAPサービスで本オプションを使用していた場合は、アプリケーションをラップするなどして、返り値をvoidからintに変更して、ダミーの値0を常に返却するように変更してください。


JavaパッケージとXMLの名前空間の対応

J2EEのWebサービス機能では、Webサービスアプリケーションで使用されるJavaのパッケージとXMLの名前空間が対応付けられます。
移行前の名前空間の利用を継続するには、「リファレンスマニュアル(コマンド編)」の「iswsgen」を参照し、オプションで名前空間名を指定してください。Javaのパッケージと名前空間が1対1に対応していない場合は、既存のクラスをラップするクラスを作成するなどして1対1に対応させてください。


Fault返却時のクライアントアプリケーションでの例外

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互換」を明示的に選択してインストールしてください。