このトピックでは、Sun Microsystems 社
の Enterprise JavaBeans™ (EJB) アーキテクチャー仕様で定義されている分散コンポーネント・アーキテクチャーのハイレベルな概要を説明します。
Enterprise
JavaBeans
の詳細な仕様とテクノロジーの説明は、Web サイト
java.sun.com
でご覧になれます。
エンタープライズ Bean は、アプリケーション開発者にいくつかの利点を提供します。
- 異なるベンダーのツールを使用して開発されたコンポーネントを結合して、分散アプリケーションをビルドすることができる。
- エンタープライズ Bean を使用すると、アプリケーションの作成が容易になる。
トランザクションや状態管理の低レベルの詳細、マルチスレッド化、
リソース・プール、および他の複雑な低レベルの API に取り組む必要はありません。
ただし、低レベル API が必要な場合には、エキスパート・プログラマーが低レベル API に直接アクセスすることができます。
- 開発すれば、再コンパイルあるいはソース・コード変更をしなくても、複数プラットフォームにデプロイすることができる。
- エンタープライズ Bean の使用をコントロールする EJB 仕様は、他の Java™ API および CORBA と互換性がある。この仕様は、エンタープライズ Bean と非 Java アプリケーションの間のインターオペ
ラビリティーを提供します。
- エンタープライズ 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 サーバーの機能は、例えば、データベースやアプリケーション・サーバーが提供することも
できます。