EJB ファクトリーは、エンタープライズ Bean インスタンスの作成または検索を単純化するアクセス Bean です。
EJB ファクトリーは、2 つのオブジェクト、すなわち InitialContext
およびエンタープライズ Bean のホーム・インターフェースが提供する機能をカプセル化します。
これを使用すれば、エンタープライズ Bean ホームのルックアップ操作を実行するのに必要なプロバイダー URL や、
その他の設定値を設定できるようになります。EJB ファクトリーのスーパークラスは、EJB ホームの実装を獲得するのに必要な、
ネーム・サービスでのルックアップや PortableRemoteObject.narrow() 操作実行の実装の詳細を非表示にします。
(EJB ファクトリーはリモート EJB インスタンスを取得するのに使用されるヘルパー・クラスであるため、
順序付け可能でないことに注意してください。)
EJB ファクトリーは、「アクセス Bean の追加」ウィザードを使用して、
以下のアクセス Bean 型のいずれかを生成するように選択すれば、いつでも自動的に生成されます。
- Java™ Bean ラッパー
- コピー・ヘルパー
- データ・クラス
作成ウィザードでは、新規ファクトリー・クラス用に別の Java パッケージを指定することができます。
注: ローカル・クライアント・ビューしか持たないエンタープライズ Bean では、EJB ファクトリーが作成されません。
ホーム・インターフェースのマッピング
EJB ファクトリーの目的は、エンタープライズ Bean リモート・オブジェクトへの参照を作成する手段を提供することです。
ファクトリー・クラスは、エンタープライズ Bean のホーム・インターフェースのメソッドを実装することと、
これらのメソッド呼び出しをエンタープライズ Bean のホームのインスタンスに代行させることで、この目的を果たします。
このファクトリー・クラスは、特定ネーム・サービスの「ルックアップ」を実行して、
EJBHome への参照を取得します。ユーザーはルックアップ呼び出しを任意のネーム・サービスに指図するか、
またはデフォルト設定を使用できます。
最初の呼び出しが EJBHome メソッドに対して行われると、
インスタンスはルックアップ・オペレーションを実行して EJBHome オブジェクトを獲得することになります。
JNDI のマッピング
デフォルト JNDI 名がそれぞれのアクセス Bean クラスに生成されます。
コード生成プログラムは、拡張エディターで指定された JNDI 名を使用します。
このデフォルトは、ホーム・インターフェース名です。
JNDI 名は、setJNDIName() を使用すると変更できます。
一般に、JNDI 名を変更する必要はありません。ただし、エンタープライズ Bean が異なるホームにデプロイされている場合、
管理者は違いを示すために、JNDI 名に接頭部を追加することができます。
ホームをルックアップするために、アクセス Bean は rootContext として知られるネーム・サービス・コンテキストを取得します。
これは、ネーム・サービスの URL とタイプを知っていれば構成できるものです。
アクセス Bean は、rootContext のプロパティーを設定するための以下の 2 つの API を提供しています。
- setInitialContextFactoryName()
- setInitialContextProviderURL()