EJB アーキテクチャー

このトピックでは、Sun Microsystems 社の Enterprise JavaBeans™ (EJB) アーキテクチャー仕様で定義されている分散コンポーネント・アーキテクチャーのハイレベルの概要を説明します。

完全な Enterprise JavaBeans 仕様およびこのテクノロジーの説明は、 java.sun.com [/concept/conbody/p/xref/desc {"- topic/desc "}) (desc] Web サイトから入手できます。

エンタープライズ Bean は、アプリケーション開発者にいくつかの利点を提供します。

エンタープライズ Bean
エンタープライズ Bean は、分散およびトランザクション指向エンタープライズ・アプリケーションの非ビジュアル・コン ポーネントです。 通常、エンタープライズ Bean は、EJB コンテナーにデプロイされ、EJB サーバー上で実行されます。 これらは、デプロイメント記述子を変更することによってカスタマイズ可能であり、 新規アプリケーションを作成するために他の Bean とアセンブルすることができます。 エンタープライズ Bean には、セッション Beanエンティティー Bean、および メッセージ駆動型 Bean の 3 つのタイプがあります。
  • セッション Bean: セッション Bean は、非永続のエンタープライズ Bean です。これらはステートフルまたはステートレスのいずれかです。ステートフル・セッション Bean は、単一のクライアントに代わって動作し、複数のメソッド呼び出しとトランザクションにわたって、クライアント固有のセッション情報 (会話状態と呼ばれる) を保持します。これは、単一クライアント/サーバー・セッションの期間中存在します。ステートレス・セッション Bean は、これに比べ、会話状態を保持することはありません。 ステートレス・セッション Bean は、そのコンテナーによってプールされ、複数のクライアントからの複数の要求を処理します。
  • エンティティー Bean: エンティティー Bean は、永続的データを含み、 さまざまな永続的データ・ストアに保管が可能なエンタープライズ Bean です。各エンティティー Bean は、それぞれ固有の ID を持っています。自己のパーシスタンスを管理する エンティティー Bean は、 Bean 管理パーシスタンス (BMP) エンティティー Bean と呼ばれます。 自己のパーシスタンスを EJB コンテナーに委譲するエンティティー Bean は、コンテナー管理パーシスタンス (CMP) エンティティー Bean と呼ばれます。
  • メッセージ駆動型 Bean: メッセージ駆動型 Bean は、JMS メッセージを受信して処理するエンタープライズ Bean です。セッション Bean やエンティティー Bean と 異なり、メッセージ駆動型 Bean にはインターフェースがありません。 これらの Bean は、メッセージングによってのみアクセスが可能であり、会話状態を保持することはありません。メッセージ駆動型 Bean は、 キューとリスナーとの非同期通信を可能にし、メッセージ処理とビジネス・ロジックとの分離を実現します。
リモート・クライアント・ビュー
リモート・クライアント・ビュー 仕様は、EJB 1.1 から使用可能になりました。エンタープライズ Bean のリモート・クライアント・ビューは、ロケーション に依存しません。 Bean インスタンスと同じ JVM で実行中のクライアントは、同一また は別のマシン上の別の JVM で実行中のクライアントと同じ API を 使用して Bean にアクセスします。
  • リモート・インターフェース: リモート・インターフェース は、クライアントがエンタープライズ Bean に対して呼び出すことのできるリモート・ビジネス・メソッドを指定します。
  • リモート・ホーム・インターフェース: リモート・ホーム・インターフェース は、リモート・クライアントで使用されるメソッドを指定して、エンタープライズ Bean クラスのインスタンスの探索、作成、除去を行います。
ローカル・クライアント・ビュー
ローカル・クライアント・ビュー 仕様は、EJB 2.0 以降で使用可能です。 リモート・クライアント・ビューとは違って、Bean のローカル・クライア ント・ビューは、ロケーションに依存します。 ローカル・クライアント・ビューがエンタープライズ Bean にアクセスするには、 ローカル・クライアントのほかに、同じ JVM にローカル・クライアント・ビュー を配置するエンタープライズ Bean の両方が必要です。 このためローカル・クライアント・ビューには、リモート・クライアント・ ビューにはあるロケーション透過性がありません。ローカル・インターフェースおよびローカル・ホーム・インターフェースは、ローカル・クライアントである エンタープライズ Bean からのライト・ウェイト・アクセスをサポートしています。セッション Bean およびエンティティー Bean は、それらのクライアントと緊密に結合しており、リモート・メソッド呼び出しと通常関連付けられたオーバーヘッドのないアクセスを許可します。
  • ローカル・インターフェース: ローカル・インターフェース は、リモート・インターフェースのライト・ウェイト・バージョンであり、 ローカル・クライアントのためのものです。 ローカル・インターフェースは、ローカル・クライアントに呼び出されるビジネス・ロジック・メソッドを含みます。
  • ローカル・ホーム・インターフェース: ローカル・ホーム・インターフェース は、ローカル・クライアントで使用されるメソッドを指定して、エンタープライズ Bean クラスのインスタンスの探索、作成、除去を行います。
Web サービス・クライアント・ビュー
EJB 2.1 仕様では、EJB アーキテクチャーに Web サービス・サポートが採用されました。 セッション Bean のクライアントは、Web サービス・クライアントになることができます。 Web サービス・クライアントは、ステートレス・セッション Bean の Web サービス・クライアント・ビューを利用できます。 このビューには、対応するサービス・エンドポイント・インターフェースが備わっています。
サービス・エンドポイント・インターフェース
ステートレス・セッション Bean のサービス・エンドポイント・インターフェース は、セッション Bean の機能を Web サービス・エンドポイントとして公開します。 Web サービスの Web サービス記述言語 (WSDL) 文書には、メッセージに対して作動するエンドポイントのセットとして、Web サービスが記述されています。 WSDL 文書に、ステートレス・セッション Bean のサービス・エンドポイント・インターフェースをエンドポイントの 1 つとして含めることができます。 既存のステートレス・セッション Bean を、Web サービス・クライアント・ビューが含まれるように変更したり、あるいは既存の WSDL からサービス・エンドポイント・インターフェースをマップして正しいインターフェースが提供されるようにすることができます。

Web サービス・クライアント・ビューはロケーションに依存しないので、リモート呼び出しによってアクセスすることが可能です。

EJB クライアント JAR ファイル
EJB クライアント JAR ファイルは、オプションの JAR ファイルです。 このファイルには、クライアント・プログラムが EJB JAR ファイル内に含まれる エンタープライズ Bean のクライアント・ビューを使用するのに必要なクライアント・インターフェースを含めることができます。EJB モジュールについて EJB クライアント JAR ファイルを作成しないとした場合は、すべてのクライアント・インターフェース・クラスは EJB JAR ファイルに含まれます。デフォルトでは、ワークベンチは EJB プロジェクトごとに EJB クライアント JAR プロジェクトを作成します。
EJB コンテナー
EJB コンテナー は、1 つ以上のエンタープライズ Bean を管理するランタイム環境です。EJB コンテナーは、エンタープライズ Bean オブジェクトのライフ・サ イクルを管理し、分散トランザクションを調整し、オブジェクトのセキュリティーを実装します。各 EJB コンテナーは一般に EJB サーバーによって提供され、EJB コンテナーには、 EJB サーバーで実行されるエンタープライズ Bean のセットが含まれます。
デプロイメント記述子
デプロイメント記述子 は、エンタープライズ Bean と共に EJB JAR ファイルまたは EAR ファイルにパッケージされた XML ファイルです。デプロイメント記述子には、エンタープライズ Bean の内容および構造が記述してあるメタデータや、EJB コンテナーのランタイム・トランザクションおよびセキュリティー情報が含まれています。
EJB サーバー
EJB サーバー は、 エンタープライズ Bean を使用するサーバー・アプリケーションの実行をサポートするためのランタイム環境を提供する、ハイレベルのプロセスまたはアプリケーションです。EJB サーバーは、JNDI アクセスが可能な命名サービスを提供し、クライアント・アプリケーションへのリソースの割り振りを管理および調整します。また、システム・リソースへのアクセスやトランザクション・サービスを提供します。EJB サーバーの機能は、例えば、データベースやアプリケーション・サーバーが提供することも できます。