Stateless Session BeanをWebサービス化するための手順について説明します。
(1) Stateless Session Beanの作成
プロジェクトの作成
プロジェクトの作成に関しては"EJBを作成する準備をする"を参照してください。
このとき、[EJBモジュールバージョン]は[2.1]を選択します。
Enterprise Beanの作成
[新規Enterprise Bean]ウィザードでEnterprise Beanを作成します。
Enterprise Bean種別
[Enterprise Bean種別]では、[Stateless Session Bean]を選択します。
インタフェース生成オプション
Stateless Session Beanを作成する場合は、[LocalHome/Localインタフェースを生成する]を選択してください。Webサービスからだけ呼び出されるStateless Session Beanの場合はLocalHome/Localインタフェースは不要ですが、ここでは、[LocalHome/Localインタフェースを生成する]を選択してください。
注意
Interstage Application Serverで運用するEJB2.1アプリケーションは、Home/Remoteインタフェース経由でのリモートアクセスをサポートしていません。
ビジネスメソッド定義
Webサービスで公開するメソッドを定義します。ウィザード終了後に生成されたEnterprise Beanクラスに定義したメソッドを実装します。
サービスエンドポイントインターフェースの作成
生成したEnterprise Beanクラスからサービスエンドポイントインタフェースを作成します。
サービスポイントインタフェースでは以下の条件を満たすようにしてください。
java.rmi.Remoteインタフェースを継承する
メソッドはjava.rmi.RemoteExceptionをthrowする
メソッドの引数と復帰値に指定できるJavaデータ型には制限があります。詳細は、"Interstage Application Server J2EE ユーザーズガイド(旧版互換)"を参照ください。
メソッドのオーバーロードをしない
メソッドの引数と復帰値としてEJBObjectやEJBLocalObjectを含まない
メソッドの引数と復帰値に使用する配列型の要素や、構造体型・Bean型のメンバに以下は定義しない
Localインタフェース
Remoteインタフェース
LocalHomeインタフェース
Homeインタフェース
Timersインタフェース
Timersハンドルインタフェース
Collection型のCMPのfinderメソッドの復帰値
ポイント
インタフェースの生成は[インタフェースの抽出]機能を利用して生成できます。
プロジェクトエクスプローラで生成したEnterprise Beanクラスを選択します。
コンテキストメニューから[リファクタリング] > [インタフェースの抽出]を選択します。
[インタフェースの抽出]ダイアログボックスの[インタフェース内で宣言されるメンバ]で公開するメソッドを選択します。
生成されたインタフェースをサービスエンドポイントインタフェースの条件を満たすように修正します。
(2) Stateless Session BeanのWebサービス化
Stateless Session BeanをWebサービス化するには、以下の対応が必要となります。
deployment descriptor(ejb-jar.xml)へのサービスエンドポイントインタフェース情報の定義
Webサービスの公開に必要となる以下のWebサービス関連定義ファイルの作成
WSDLファイル
<WSDLファイル名>_mapping.xml
webservices.xml
Webサービスウィザードを利用することで、サービスエンドポイントインタフェースから、上記のファイルの更新、生成を自動で行うことができます。
Webサービス(JAX-RPC)ウィザードによるStateless Session BeanのWebサービス化
WebサービスウィザードでStateless Session BeanをWebサービス化します。ウィザードの詳細については"Webサービスに必要なファイルの生成"を参照してください。
ソースフォルダ
[ソースフォルダ]には、Webサービス化したいEnterprise JavaBeansプロジェクトのソースフォルダを指定します。Enterprise JavaBeansバージョンが"2.1"でないプロジェクトは指定できません。
サービスエンドポイントインタフェース名
作成したサービスエンドポイントインタフェース名を指定します。
ポイント
Stateless Session BeanのWebサービス化では、Enterprise Beanクラスが実装クラスとなるため、実装クラス名を設定する必要はありません。
注意
以下のEnterprise JavaBeansをWebサービス化しようとした場合は、ウィザードでエラーとなります。
同一のサービスエンドポイントインタフェースを複数のEnterprise Beanクラスで実装している場合
同じEnterprise Beanクラスを別のEJB名で登録してある場合
(3) EARファイルにパッケージング
Webサービス化されたStateless Session Beanを配備する場合は、モジュールは必ずEARファイルにパッケージングします。
(4) 配備
作成したEARファイルをInterstage Application ServerのJ2EE実行環境に配備します。
注意
Webサービス化したStateless Session Beanを含むEARファイルは、以下のJ2EE実行環境に配備してください。それ以外のJ2EE実行環境に配備すると失敗します。
WebアプリケーションとEJBアプリケーションを同一JavaVMで運用
ポイント
Webサービス化したStateless Session BeanをIJServerクラスタに配備すると、自動的にEJB SOAPルータと呼ばれるWebアプリケーションが組み込まれます。
WebサービスではHTTPプロトコルでリクエストが送受信されるため、Webサービス化されたStateless Session Beanを運用する場合にはSOAP(HTTP)からのリクエストを送受信するためのServletが必要になります。このServletのことをEJB SOAPルータと呼びます。
EJB SOAPルータはWebサービス化されたStateless Session Beanを含むEJB JARファイルに対して1つずつ作成されます。