POJOで開発されたWebサービスを,EJBのWebサービスとして動作させることで,EJBの機能を利用できます。ここでは,POJOのWebサービスをEJBのWebサービスに移行する方法について説明します。なお,POJOのWebサービスで十分な場合,EJBへの移行は不要です。
POJOのWebサービスをEJBのWebサービスに移行する方法を次の表に示します。
表B-1 EJBのWebサービスに移行する方法
項番 | POJOのWebサービスの構成物 | EJBのWebサービスへの移行方法 |
---|---|---|
1 | Webサービス実装クラス | ソースコードにjavax.ejb.Statelessアノテーションを追加し,コンパイルします。 |
2 | 項番1以外のJavaクラス(SEI,JavaBeansクラス(スタブ)など) | EJBのWebサービスへの移行後もクラスファイルをそのまま使用できます。 |
3 | WSDL | POJOのWebサービスの場合とEJBのWebサービスの場合とではWebサービスとして公開するURLが異なるため,soap:address要素のlocation属性などのURLに関する値を変更して使用します。EJBのURLについては,「10.2.2(1) ディスカバリ」を参照してください。 |
4 | cosminexus-jaxws.xml,web.xml,application.xmlなどのDD | POJOのWebサービス用に作成されたDDは,EJBのWebサービスではそのまま使用できません。EJBのWebサービス用に新たにDDを作成してください。 |
POJOのWebサービスをEJBのWebサービスに移行する場合,Webサービス実装クラスのソースコードの修正が必要です。ここでは,POJOのWebサービスの実行に必要なクラスファイルと,Webサービス実装クラスのソースコードがあることを前提に説明します。
移行手順の流れを次に示します。
POJOのWebサービス実装クラスのソースコードにjavax.ejb.Statelessアノテーションでアノテートします。アノテートしたソースコードをコンパイルしてクラスファイルを作成します。
POJOのWebサービスを実行するために必要なSEI,JavaBeansクラス(スタブ)などのクラスファイルは,EJBのWebサービスとして実行する場合にも使用できます。
POJOのWebサービスを実行するために使用していたWSDLがある場合は,EJBのWebサービスとして実行する場合にも使用できます。ただし,POJOのWebサービスをEJBのWebサービスとして実行した場合に,Webサービスとして公開するURLが異なるため,WSDLのsoap:address要素のlocation属性などのURLに関する値を変更して使用します。EJBのWebサービスのURLについては,「10.2.2(1) ディスカバリ」を参照してください。
(1)(2)のクラスファイルおよびWSDLをEJB JARファイルに格納します。EJB JARファイルの構成については,「3.5.2 EJB JARファイルの構成」を参照してください。
(3)で作成したEJB JARファイルを指定するapplication.xmlを作成します。application.xmlの例を次に示します。「statelessjava.jar」には(3)で作成したEJB JARファイルの名前を指定します。
<?xml version="1.0" encoding="UTF-8"?> |
バージョン5のapplication.xmlを作成する場合は,application要素のversion属性を"5"に,xsd:schemaLocation属性の二つ目のロケーション情報を"http://java.sun.com/xml/ns/javaee/application_5.xsd"にしてください。
EJBのWebサービスの動作には,web.xmlは必須ではありません。EJBのWebサービスで,サーブレットフィルタなどの設定をweb.xmlに加える場合にweb.xmlを作成します。詳細については,「3.5.4 EJBのWebサービスの設定用WARファイルの作成」を参照してください。また,cosminexus-jaxws.xmlはEJBのWebサービスには適用されません。
(3)(4)で作成したEJB JARファイルとapplication.xmlを含むEARファイルを作成します。EARファイルの構成については,「3.5.3 EARファイルの作成」を参照してください。