ヘッダーをスキップ

Oracle Containers for J2EE Enterprise JavaBeans開発者ガイド
10g(10.1.3.1.0)

B31852-03
目次
目次
索引
索引

戻る 次へ

4 EJB 3.0セッションBeanの実装

この章では、次のようなEJB 3.0セッションBeanの実装方法を説明します。

詳細は、次を参照してください。

EJB 3.0ステートレス・セッションBeanの実装

EJB 3.0では、ステートレス・セッションBeanの開発が大幅に単純化され、多くの複雑な開発タスクが排除されています。次に例を示します。

詳細は、次を参照してください。

EJB 3.0ステートレス・セッションBeanを実装するには、次のようにします。

  1. ステートレス・セッションBeanクラスを作成します。

    Plain Old Java Object(POJO)を作成し、@Statelessアノテーションを使用してそれをステートレス・セッションBeanとして定義できます。


    注意

    OC4Jでは、@Statelessの属性mappedNameは無視されます。詳細は、「OC4Jによるアノテーション属性mappedNameのサポート」を参照してください。 


  2. ビジネス・メソッドを実装します。


    注意

    ステートレス・セッションBeanには、removeメソッドは不要です。 


  3. オプションで、適切なアノテーションを使用してライフ・サイクル・コールバック・メソッドを定義します。

    ライフ・サイクル・メソッドを定義する必要はありません。このようなメソッドの実装はすべてOC4Jに用意されています。ステートレス・セッションBeanのライフ・サイクルの特定の時点で独自のアクションを実行する場合にのみ、ステートレス・セッションBeanクラスのメソッドをライフ・サイクル・コールバック・メソッドとして定義します。

    詳細は、「EJB 3.0セッションBeanのライフ・サイクル・コールバック・インターセプタ・メソッドの構成」を参照してください。

  4. オプションで、OC4J固有のデプロイ・オプションを定義します。

    EJB 3.0アプリケーションでこれを行うには、ステートレス・セッションBeanクラスにOC4J固有のoracle.j2ee.ejb.@StatelessDeploymentアノテーションを付けます(「EJB 3.0セッションBeanのOC4J固有のデプロイ・オプションの構成」を参照)。

  5. セッションBeanの構成を完了します(第5章「EJB 3.0セッションBeanの使用方法」を参照)。

EJB 3.0ステートフル・セッションBeanの実装

EJB 3.0では、ステートフル・セッションBeanの開発が大幅に単純化され、多くの複雑な開発タスクが排除されています。次に例を示します。

詳細は、次を参照してください。

EJB 3.0ステートフル・セッションBeanを実装するには、次のようにします。

  1. ステートフル・セッションBeanクラスを作成します。

    POJOを作成し、@Statefulアノテーションを使用してそれをステートフル・セッションBeanとして定義できます。


    注意

    OC4Jでは、@Statefulの属性mappedNameは無視されます。 


  2. ビジネス・メソッドを実装します。

    ステートフル・セッションBeanクラスをremoveメソッドとして定義するには、@Removeアノテーションを使用します。

  3. オプションで、適切なアノテーションを使用してライフ・サイクル・コールバック・メソッドを定義します。

    ライフ・サイクル・メソッドを定義する必要はありません。このようなメソッドの実装はすべてOC4Jに用意されています。ステートフル・セッションBeanのライフ・サイクルの特定の時点で独自のアクションを実行する場合にのみ、ステートフル・セッションBeanクラスのメソッドをライフ・サイクル・コールバック・メソッドとして定義します。

    詳細は、「EJB 3.0セッションBeanのライフ・サイクル・コールバック・インターセプタ・メソッドの構成」を参照してください。

  4. オプションで、OC4J固有のデプロイ・オプションを定義します。

    EJB 3.0アプリケーションでこれを行うには、ステートフル・セッションBeanクラスにOC4J固有のoracle.j2ee.ejb.@StatefulDeploymentアノテーションを付けます(「EJB 3.0セッションBeanのOC4J固有のデプロイ・オプションの構成」を参照)。

  5. セッションBeanの構成を完了します(第5章「EJB 3.0セッションBeanの使用方法」を参照)。

EJB 2.1クライアントへのEJB 3.0ステートレス・セッションBeanの適用

EJB 3.0ステートレス・セッションBeanをEJB 2.1ホームおよびコンポーネント・インタフェースに関連付けることで(「アノテーションの使用方法」を参照)、EJB 2.1クライアントからアクセスできるようにEJB 3.0ステートレス・セッションBeanを調整できます。

この技術を使用することで、EJB 2.1アプリケーションからEJB 3.0への増分移行を管理することや、既存のEJB 2.1クライアントからEJB 3.0を使用して実装した新規開発機能にアクセスすることが可能になります。

EJB 2.1ホームおよびコンポーネント・インタフェースの詳細は、次を参照してください。

アノテーションの使用方法

EJB 2.1クライアントにEJB 3.0ステートレス・セッションBeanを適用するには、次のようにします。

  1. EJB 2.1ホーム・インタフェースをEJB 3.0ステートレス・セッションBeanに関連付けます。

    次のように、リモート・ホーム・インタフェースには@RemoteHomeアノテーションを使用し、ローカル・ホーム・インタフェースには@LocalHomeアノテーションを使用します。

    @Stateless
    @RemoteHome (value=Ejb21RemoteHome1.class)
    @LocalHome (value=Ejb21LocalHome.class)
    public class MyStatelessSB {
    ...
    }
    
    


    注意

    ステートレス・セッションBeanは、最大で1つのリモートおよびローカル・ホーム・インタフェースに関連付けることができます。 


  2. ホーム・インタフェースのcreateメソッドをサポートする要件を検討します。

    EJB 3.0ステートレス・セッションBeanには、ホーム・インタフェースがある場合でもejbCreateメソッドは必要ありません。かわりに、post-constructライフ・サイクル・コールバック・メソッドを定義できます(「EJB 3.0セッションBeanのライフ・サイクル・コールバック・インターセプタ・メソッドの構成」を参照)。

  3. EJB 2.1コンポーネント・インタフェースをEJB 3.0ステートレス・セッションBeanに関連付けます。

    次のように、リモート・コンポーネント・インタフェースには@Remoteアノテーションを使用し、ローカル・コンポーネント・インタフェースには@Localアノテーションを使用します。

    @Stateless
    @Remote (value={Ejb21Remote1.class, Ejb21Remote2.class})
    @Local (value={Ejb21Local.class})
    public class MyStatelessSB {
    ...
    }
    
    


    注意

    ステートレス・セッションBeanは、1つ以上のリモートおよびローカル・コンポーネント・インタフェースに関連付けることができます。 


EJB 2.1クライアントへのEJB 3.0ステートフル・セッションBeanの適用

EJB 3.0ステートフル・セッションBeanをEJB 2.1ホームおよびコンポーネント・インタフェースに関連付けることで(「アノテーションの使用方法」を参照)、EJB 2.1クライアントからアクセスできるようにEJB 3.0ステートフル・セッションBeanを調整できます。

この技術を使用することで、EJB 2.1アプリケーションからEJB 3.0への増分移行を管理することや、既存のEJB 2.1クライアントからEJB 3.0を使用して実装した新規開発機能にアクセスすることが可能になります。

EJB 2.1ホームおよびコンポーネント・インタフェースの詳細は、次を参照してください。

アノテーションの使用方法

EJB 2.1クライアントにEJB 3.0ステートフル・セッションBeanを適用するには、次のようにします。

  1. EJB 2.1ホーム・インタフェースをEJB 3.0ステートフル・セッションBeanに関連付けます。

    次のように、リモート・ホーム・インタフェースには@RemoteHomeアノテーションを使用し、ローカル・ホーム・インタフェースには@LocalHomeアノテーションを使用します。

    @Stateful
    @RemoteHome (value=Ejb21RemoteHome1.class)
    @LocalHome (value=Ejb21LocalHome.class)
    public class MyStatefulSB {
    ...
    }
    
    


    注意

    ステートフル・セッションBeanは、最大で1つのリモートおよびローカル・ホーム・インタフェースに関連付けることができます。 


  2. ホーム・インタフェースのcreateメソッドをサポートする要件を検討します。

    次のように、ホーム・インタフェースのcreate<METHOD>ごとに、EJB 3.0ステートフル・セッションBeanに同じシグネチャ(引数の数、順序および型)を持つ初期化メソッドを実装し、そのメソッドに@Initアノテーションを付けます。

    @Stateful
    @RemoteHome (value=Ejb21RemoteHome1.class)
    @LocalHome (value=Ejb21LocalHome.class)
    public class MyStatefulSB {
        private String message;
        private String name;
    ...
        // Corresponds to home interface method create()
    
        @Init
        public void initDefault() throws CreateException {
            this.message = "Default Message";
            this.name = "Default Name";
        }
    
        // Corresponds to home interface method createWithMessage(String)
    
        @Init
        public void initWithMsg(String message) throws CreateException {
            this.message = message;
        }
    
        // Corresponds to home interface method createWithName(String)
        // Use @Init attribute value to disambiguate createWithName(String)
        // from createWithMessage(String).
    
        @Init(value="createWithName")
        public void initWithName(String message) throws CreateException {
            this.name = name;
        }
    
    ...
    }
    
    

    初期化メソッドには、任意のメソッド名を指定できます。OC4Jは、シグネチャに基づいてホーム・インタフェースのcreate<METHOD>とステートフル・セッションBeanの初期化メソッドを照合します。別の方法として、@Initの属性valueを使用して明示的にホーム・インタフェースのcreate<METHOD>の名前を指定することも可能です。この方法は、ホーム・インタフェースの2つ以上のcreate<METHOD>メソッドに同じシグネチャが割り当てられている場合に役立ちます。

    初期化メソッドは、post-constructライフ・サイクル・メソッドが存在する場合、そのメソッドの起動後に起動されます(「EJB 3.0セッションBeanのライフ・サイクル・コールバック・インターセプタ・メソッドの構成」を参照)。

  3. EJB 2.1コンポーネント・インタフェースをEJB 3.0ステートフル・セッションBeanに関連付けます。

    次のように、リモート・コンポーネント・インタフェースには@Remoteアノテーションを使用し、ローカル・コンポーネント・インタフェースには@Localアノテーションを使用します。

    @Stateful
    @Remote (value={Ejb21Remote1.class, EJB21Remote2.class})
    @Local (value={Ejb21Local.class})
    public class MyStatefulSB {
    ...
    }
    
    


    注意

    ステートフル・セッションBeanは、1つ以上のリモートおよびローカル・コンポーネント・インタフェースに関連付けることができます。 



戻る 次へ
Oracle
Copyright © 2002, 2008 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引