Enterprise Beanの実装で利用できるインタフェースについて説明します。利用できるインタフェースの一覧を次の表に示します。
表2-6 利用できるインタフェースの一覧
インタフェース名 | 説明 |
---|---|
リモートホームインタフェース※1 | EJB仕様1.1以降で規定されている,javax.ejb.EJBHomeを継承した,リモートクライアント用のインタフェースです。主に,Enterprise Beanインスタンスの取得のために使用します。 |
リモートコンポーネントインタフェース※2 | EJB仕様1.1以降で規定されている,javax.ejb.EJBObjectを継承した,リモートクライアント用のインタフェースです。主に,ビジネスメソッドを定義します。 |
リモートビジネスインタフェース | リモートクライアントからEnterprise Beanを呼び出すためのビジネスメソッドを定義するインタフェースです。規定されたインタフェースを継承する必要はありません。 |
ローカルホームインタフェース | EJB仕様2.0以降で規定されている,javax.ejb.EJBLocalHomeを継承した,ローカルクライアント用のインタフェースです。主に,Enterprise Beanインスタンスの取得のために使用します。 |
ローカルコンポーネントインタフェース | EJB仕様2.0以降で規定されている,javax.ejb.EJBLocalObjectを継承した,ローカルクライアント用のインタフェースです。主に,ビジネスメソッドを定義します。 |
ローカルビジネスインタフェース | ローカルクライアントからEnterprise Beanを呼び出すためのビジネスメソッドを定義するインタフェースです。規定されたインタフェースを継承する必要はありません。 |
なお,このマニュアルの説明では,複数のインタフェースをまとめた総称を使用することがあります。説明で使用するインタフェースの総称を次に示します。
表2-7 インタフェースの総称
インタフェースの総称 | 説明 |
---|---|
ホームインタフェース | 次のインタフェースの総称です。
|
コンポーネントインタフェース | 次のインタフェースの総称です。
|
ビジネスインタフェース | 次のインタフェースの総称です。
|
リモートインタフェース | 次のインタフェースの総称です。
|
ローカルインタフェース | 次のインタフェースの総称です。
|
これらのインタフェースは,Session BeanまたはEntity Beanの場合に実装します。Message-driven Beanの場合はこれらのインタフェースを持ちません。
Session Beanの場合,ローカルインタフェースからの呼び出しにNo-Interface viewを使用できます。この場合は,インタフェースの実装を省略できます。No-Interface viewについては,「2.16 ローカルビジネスインタフェースの省略(No-Interface viewの利用)」を参照してください。
リモートインタフェースではJava RMIのインタフェースの規定に従い,RMI-IIOP通信によってEnterprise Beanの呼び出しをします。クライアントが異なるJavaVMに存在するEnterprise Beanを呼び出すことができますが,実行時に通信上のオーバーヘッドが発生します。メソッド実行時の引数および戻り値は値渡し(pass by value)になります。
ローカルインタフェースの場合,Enterprise Beanの呼び出しはJavaのメソッド呼び出しで実行され,通信が発生しません。クライアントは同一J2EEアプリケーションに存在する場合にだけ,このインタフェースを利用できます。また,ローカルインタフェースを利用する場合には,リモートインタフェースと異なり,メソッド実行時の引数および戻り値は参照渡し(pass by reference)になります。
ビジネスインタフェースを使用した場合でも,次の機能を使用できます。
表2-8 タイムアウトの適用範囲
インタフェース | メソッド | Stateless Session Bean | Stateful Session Bean | Singleton Session Bean | Message Driven Bean | PersistenceAPI |
---|---|---|---|---|---|---|
ビジネスインタフェース | ビジネスメソッド※1 | ○ | ○ | ○ | - | - |
ホームまたはコンポーネントインタフェース※2 | create | × | ○ | - | - | - |
ビジネスメソッド | ○ | ○ | - | - | - | |
remove | × | ○ | - | - | - | |
javax.ejb.TimedObject | ejbTimeout | ○ | - | ○ | - | - |
(凡例) ○:適用される。 ×:適用されない。 -:該当なし。
ここでは,同一J2EEサーバ内のほかのJ2EEアプリケーションで動作するビジネスインタフェースを呼び出す場合と,ほかのJ2EEサーバで動作するビジネスインタフェースを呼び出す場合について説明します。
どちらの場合も,呼び出し元のEJB-JARファイルまたはWARファイルに,呼び出し先のEnterprise Beanのビジネスインタフェース,およびインタフェースで使用するユーザ作成クラスを含めます。また,自動的にバインドされる名称(Portable Global JNDI名またはHITACHI_EJBから始まる名称),またはユーザ指定名前空間機能で設定した別名を使用してルックアップします。ルックアップで使用する名称については,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「2.5 HITACHI_EJBから始まる名称でのルックアップ」を参照してください。