EJB 3.0およびWebサービス・メタデータを使用したステートレスSession EJB Webサービスの開発方法

日付:2006年1月13日
著者:Debu Panda

はじめに

このサンプル・アプリケーションでは、アノテーションを使用したステートレスEJB Webサービスを作成および配置することによって、EJB 3.0およびWebサービス・メタデータ(JSR-181)仕様に対するオラクルのサポートについて説明します。
 

EJB 3.0を使用したステートレスSession Webサービスの例

このWebサービスは、公開するHelloWorld EJBのエンドポイント・インタフェースを使用して定義します。 このサービスはJavaインタフェースであり、 @WebServiceアノテーションでマークされます。

                                   
import javax.jws.WebService;
import javax.jws.WebMethod; 

@WebService
public interface HelloServiceInf extends java.rmi.Remote{
    @WebMethod java.lang.String sayHello(java.lang.String name) throws java.rmi.RemoteException;

}
                                  

EJBの実装を提供する実際のBeanクラスは、エンドポイント・インタフェースを実装する簡単なJavaクラスです。

                                   
@WebService
@Remote(HelloServiceInf.class)
@Stateless(name="HelloServiceEJB")
public class HelloServiceBean implements HelloServiceInf {

     public String sayHello(String name) {
        return("Hello "+name +" from first EJB3.0 Web Service");
    }

}

                                

@Statelessアノテーションは、BeanをステートレスEJBとしてマークします。 name属性は、HelloServiceEJBをEJBの使用する名前として指定します。

@WebServiceアノテーションは、Webサービス・インタフェースおよびEJBのデプロイメント・ディスクリプタに注釈を付けるために使用できますが、必須ではありません。 ステートレスEJB Webサービスを配置するために、 webservices.xmlなどの他のWebサービス・デプロイメント・ディスクリプタをパッケージ化する必要は ありません

: 一部のEJB 3.0 APIは、EJB 3.0の最終仕様で変更される可能性があり、ご使用のアプリケーションをEJB 3.0最終仕様に適合させるための変更が必要な場合があります。 オラクルは、この仕様の最終版に適合する将来のバージョンのOracle Application Server Containers for J2EEについて、すべてのEJB 3.0機能の下位互換性を保証することはできません。

前提条件

必須知識

アプリケーションのサンプルを完了させるには、以下を熟知している必要があります。
  • 一般的なEJBの原則、EJBを標準Webサービス・コンポーネントとして公開する方法の基本的な理解
  • EJB 3.0
EJB 3.0の詳細は、OTNの次のドキュメントを参照してください。

ソフトウェア要件

このデモンストレーションでは、次のソフトウェア・コンポーネントがインストールされ、正しく構成されている必要があります。

表記法

  • %ORACLE_HOME% - Oracle Application Server 10g 10.1.3をインストールしたディレクトリ
  • %JAVA_HOME% - 使用するJDKがインストールされているディレクトリ
  • %HOWTO_HOME% - デモンストレーションを解凍したディレクトリ

アプリケーションの構築

このアプリケーションのJavadocは、 %HOWTO_HOME%/doc/javadoc/ディレクトリにあります。

構成ファイルは %HOWTO_HOME%/etcディレクトリにあり、application.xml、ejb-jar.xml、webservices.xmlなどのデプロイメント・ディスクリプタ・ファイルが含まれます。

アプリケーションの実行

Oracle Application Server 10g 10.1.3のスタンドアロンのインスタンスでアプリケーションのサンプルを実行するには、次の手順に従ってください。

1. サンプルのファイル・ディレクトリの検証

  • build - ビルド時に作成される一時ディレクトリ
  • log - ビルド/デプロイのログを保持する一時ディレクトリ
  • etc - アプリケーションをパッケージ化するのに必要なすべてのファイル
  • lib - 配置可能なアプリケーション・アーカイブを保持
  • doc - How-toドキュメントとJavadoc
    • javadoc - 異なるソース・ファイルのJavadoc
    • how-to-ejb30-slsb.html - このHow-toページ
  • src - デモンストレーションのソース
    • ejb - ステートレスSession Beanのサンプル・コードの格納先
    • client - アプリケーション・クライアント・コードの格納先

2. 環境の設定

次の環境変数が定義されていることを確認してください。
  • %ORACLE_HOME% - Oracle Containers for J2EEをインストールしたディレクトリ
  • %JAVA_HOME% - JDKをインストールしたディレクトリ
  • %PATH% - %ORACLE_HOME% /ant/binを含む

3. Oracle Containers for J2EEインスタンスの起動

以上を変更した後に、次のコマンドを使用してOracle Containers for J2EEをスタンドアロンで起動します。

                                     
>%ORACLE_HOME%/bin/oc4j -start
                                  

Oracle Application Server管理インストールを使用している場合、上記の変更後に次のコマンドを使用します。

                                     
> %ORACLE_HOME%/opmn/bin/opmnctl startall
                                  

4. アプリケーションの生成、コンパイル、および配置

Ant 1.6.2はOracle Containers for J2EEに同梱されており、 PATH環境変数を $ORACLE_HOME/ant/binに設定する必要があります。 オペレーティング・システムによっては、現在はAntが環境変数をサポートしていないものがあります。 該当するオペレーティング・システムの場合は、 %HOWTO_HOME% ディレクトリにあるant-oracle.xmlを修正してください。

demo directoryのant-oracle.propertiesを編集し、 次のOracle Containers for J2EEスタンドアロンで示されているとおりに、プロパティに正しい値が設定されていることを確認してください。

  • oc4j.host: Oracle Containers for J2EEが稼働しているホスト (デフォルトはlocalhost)
  • oc4j.admin.port: RMIポート番号(デフォルトは23791)
  • oc4j.admin.user: 管理ユーザー名(デフォルトはoc4jadmin)
  • oc4j.admin.password: 管理ユーザーのパスワード(デフォルトはwelcome)
  • oc4j.binding.module: 配置したWebモジュールがあるWebサイト名(デフォルトはhttp-web-site)

Oracle Application Server管理インストールを使用している場合、Oracle Application Serverのインストールにおいて管理されているOracle Containers for J2EEインスタンスの oc4j.admin.userおよび oc4j.admin.password以外の変更については、次のプロパティを変更します。

  • opmn.host: Oracle Application Serverが稼働しているhostname/IP (デフォルトはlocalhost)
  • opmn.port: Oracle Application Serverインストール時のOPMNリクエスト・ポート(デフォルトは6003)
  • oc4j.instance: 管理ユーザー名(デフォルトはoc4jadmin)

環境に応じて、 ant-oracle.propertiesdeployer.uriを適切にコメントアウトする必要があります。たとえば、OPMNの管理する単一のOracle Containers for J2EE(OC4J)インスタンスやクラスタ化されたOC4Jインスタンス/グループなどです。

注: Oracle Application Serverインストールを使用している場合、またはlocalhost以外のホスト名や8888以外のポートを使用している場合は、クライアント・コード( HelloClient.java)のWSDLのURLを適宜変更する必要があります。

アプリケーションを構築するには、 %HOWTO_HOME%ディレクトリで次のコマンドを入力します。

>ant

これで、 %HOWTO_HOME%/libディレクトリ内に ejb30ws.earが新しく作成されます。

構築が成功すると、このコマンドはアプリケーションを配置するよう試みます。 まず、ビルド・スクリプトの配置フェーズに入る前に、OC4Jが稼動しているかどうかがテストされます。

Antビルド・スクリプトの配置タスクを使用して、アプリケーションを直接配置することもできます。 %ORACLE_HOME%の環境変数が定義されていることを確認したら、 %HOWTO_HOME%ディレクトリから次のコマンドを入力します。

  
                                    
>ant deploy 
  >ant bind-web-app
                                  

5. アプリケーションの実行

次のコマンドを実行して、サンプルを実行します。

                                     
>ant run
                                  

Webサービス・クライアントがEJB Webサービスを起動して戻るのが確認できます。

まとめ

このドキュメントで学習した内容は、次のとおりです。
  • EJB 3.0を使用したステートレスSession Webサービスの構築および構成方法
  • Oracle Application Server 10g 10.1.3での簡単なステートレスSession Bean Webサービスの配置およびテスト方法