Oracle Containers for J2EE Enterprise JavaBeans開発者ガイド 10g(10.1.3.1.0) B31852-03 |
|
この章では、次のようなEJB 3.0セッションBeanの実装方法を説明します。
詳細は、次を参照してください。
EJB 3.0では、ステートレス・セッションBeanの開発が大幅に単純化され、多くの複雑な開発タスクが排除されています。次に例を示します。
javax.ejb.SessionBean
を実装する必要はありません。
ホーム(javax.ejb.EJBHome
およびjavax.ejb.EJBLocalHome
)およびコンポーネント(javax.ejb.EJBObject
およびjavax.ejb.EJBLocalObject
)ビジネス・インタフェースは不要です。
EJB 3.0 APIに記述されたセッションBeanのEJB 3.0ローカルまたはリモート・クライアントは、ビジネス・インタフェースを通じてセッションBeanにアクセスします。EJB 3.0セッションBeanのビジネス・インタフェースは、Beanに対してローカルまたはリモート・アクセスが提供されるかどうかにかかわらず、通常のJavaインタフェースです。
SessionContext
は不要です。単純にthis
を使用してセッションBeanを自身に関連付けできます。
詳細は、次を参照してください。
EJB 3.0ステートレス・セッションBeanを実装するには、次のようにします。
Plain Old Java Object(POJO)を作成し、@Stateless
アノテーションを使用してそれをステートレス・セッションBeanとして定義できます。
ライフ・サイクル・メソッドを定義する必要はありません。このようなメソッドの実装はすべてOC4Jに用意されています。ステートレス・セッションBeanのライフ・サイクルの特定の時点で独自のアクションを実行する場合にのみ、ステートレス・セッションBeanクラスのメソッドをライフ・サイクル・コールバック・メソッドとして定義します。
詳細は、「EJB 3.0セッションBeanのライフ・サイクル・コールバック・インターセプタ・メソッドの構成」を参照してください。
EJB 3.0アプリケーションでこれを行うには、ステートレス・セッションBeanクラスにOC4J固有のoracle.j2ee.ejb.@StatelessDeployment
アノテーションを付けます(「EJB 3.0セッションBeanのOC4J固有のデプロイ・オプションの構成」を参照)。
EJB 3.0では、ステートフル・セッションBeanの開発が大幅に単純化され、多くの複雑な開発タスクが排除されています。次に例を示します。
javax.ejb.SessionBean
を実装する必要はありません。
ホーム(javax.ejb.EJBHome
およびjavax.ejb.EJBLocalHome
)およびコンポーネント(javax.ejb.EJBObject
およびjavax.ejb.EJBLocalObject
)ビジネス・インタフェースは不要です。
EJB 3.0 APIに記述されたセッションBeanのEJB 3.0ローカルまたはリモート・クライアントは、ビジネス・インタフェースを通じてセッションBeanにアクセスします。EJB 3.0セッションBeanのビジネス・インタフェースは、Beanに対してローカルまたはリモート・アクセスが提供されるかどうかにかかわらず、通常のJavaインタフェースです。
SessionContext
は不要です。単純にthis
を使用してセッションBeanを自身に関連付けできます。
詳細は、次を参照してください。
EJB 3.0ステートフル・セッションBeanを実装するには、次のようにします。
POJOを作成し、@Stateful
アノテーションを使用してそれをステートフル・セッションBeanとして定義できます。
ステートフル・セッションBeanクラスをremove
メソッドとして定義するには、@Remove
アノテーションを使用します。
ライフ・サイクル・メソッドを定義する必要はありません。このようなメソッドの実装はすべてOC4Jに用意されています。ステートフル・セッションBeanのライフ・サイクルの特定の時点で独自のアクションを実行する場合にのみ、ステートフル・セッションBeanクラスのメソッドをライフ・サイクル・コールバック・メソッドとして定義します。
詳細は、「EJB 3.0セッションBeanのライフ・サイクル・コールバック・インターセプタ・メソッドの構成」を参照してください。
EJB 3.0アプリケーションでこれを行うには、ステートフル・セッションBeanクラスにOC4J固有のoracle.j2ee.ejb.@StatefulDeployment
アノテーションを付けます(「EJB 3.0セッションBeanのOC4J固有のデプロイ・オプションの構成」を参照)。
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を適用するには、次のようにします。
次のように、リモート・ホーム・インタフェースには@RemoteHome
アノテーションを使用し、ローカル・ホーム・インタフェースには@LocalHome
アノテーションを使用します。
@Stateless @RemoteHome (value=Ejb21RemoteHome1.class) @LocalHome (value=Ejb21LocalHome.class) public class MyStatelessSB { ... }
create
メソッドをサポートする要件を検討します。EJB 3.0ステートレス・セッションBeanには、ホーム・インタフェースがある場合でもejbCreate
メソッドは必要ありません。かわりに、post-constructライフ・サイクル・コールバック・メソッドを定義できます(「EJB 3.0セッションBeanのライフ・サイクル・コールバック・インターセプタ・メソッドの構成」を参照)。
次のように、リモート・コンポーネント・インタフェースには@Remote
アノテーションを使用し、ローカル・コンポーネント・インタフェースには@Local
アノテーションを使用します。
@Stateless @Remote (value={Ejb21Remote1.class, Ejb21Remote2.class}) @Local (value={Ejb21Local.class}) public class MyStatelessSB { ... }
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を適用するには、次のようにします。
次のように、リモート・ホーム・インタフェースには@RemoteHome
アノテーションを使用し、ローカル・ホーム・インタフェースには@LocalHome
アノテーションを使用します。
@Stateful @RemoteHome (value=Ejb21RemoteHome1.class) @LocalHome (value=Ejb21LocalHome.class) public class MyStatefulSB { ... }
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のライフ・サイクル・コールバック・インターセプタ・メソッドの構成」を参照)。
次のように、リモート・コンポーネント・インタフェースには@Remote
アノテーションを使用し、ローカル・コンポーネント・インタフェースには@Local
アノテーションを使用します。
@Stateful @Remote (value={Ejb21Remote1.class, EJB21Remote2.class}) @Local (value={Ejb21Local.class}) public class MyStatefulSB { ... }
|
![]() Copyright © 2002, 2008 Oracle Corporation. All Rights Reserved. |
|