1。EJBとは何ですか?
EJB(Enterprise Java Beans)は、Javaeeの商用アプリケーションコンポーネントテクノロジーであり、Javaee(Servlet、JSP、EJB)の3つの主要なコンポーネントの1つです。 EJBは、クライアントがリモート分散オブジェクトを使用できるようにするためのフレームワークを提供し、優れたスケーラビリティを備えたエンタープライズレベルのアプリケーションの開発を大幅に簡素化します。 EJBコンポーネント構造は、コンポーネントに基づいた分散コンピューティング構造であり、分散アプリケーションシステムのコンポーネントです。
EJBは、Javaサーバー側のサービスフレームワークの仕様であり、サーバー側コンポーネントシステムの技術的仕様を定義しています。この仕様は、標準的な分散型のオブジェクト指向アーキテクチャを提供できます。コンポーネント開発者とユーザー向けの複雑なシステムレベルの基礎となる機能実装をブロックし、開発者がビジネスロジックの実装に集中できるようになり、複雑な基礎サービスの一部がEJBコンテナを担当します。 EJBはアプリケーションの成長に応じて拡張でき、EJBサーバーはロードバランス機能とリソースアクセス制御を提供します。
2。EJBコンテナとコンポーネント間の通信
EJBコンテナは、EJBコンポーネントの動作環境を提供します。 EJBコンテナの管理方法EJBSは、Webコンテナがサーブレットを管理する方法に似ています。 EJBはEJBコンテナで実行する必要があります。 EJBコンテナは、主にEJBの持続性、ライフサイクル管理、セキュリティ管理、トランザクション管理、リモート接続、同時処理、クラスタリング、ロードバランシングを管理します。コンテナは、EJBコンポーネントのインスタンスを管理し、EJBコンポーネントが最大のパフォーマンスとメモリの利用を実現できるようにします。コンテナは、EJBコンポーネントをアクティブにしてパッシブ化し、インスタンスプールなどを管理します。コンテナは、分散トランザクション処理の複雑な問題の管理、リモート接続の低レベルの通信問題の管理、EJBコンポーネントの開発者と顧客のコミュニケーションの問題を隠す責任があります。したがって、EJBコンポーネント開発者は、ビジネスロジックのカプセル化に焦点を当てることができ、コンテナは他のすべてのトランザクションの処理に責任があります。 EJBは、EJBContent、JNDJ、コールバック関数などのメカニズムを介してコンテナと相互作用します。
JBossは、EJBを管理し、EJB1.1、EJB2.0、およびEJB3の仕様をサポートするコンテナおよびサーバーであり、一般にTomcatまたはJettyに結合しています。
図1(EJBコンテナの作業概略図)を参照してください。
図1:EJBコンテナの作業原理
EJBコンポーネントは、インスタンス化された場合、他のアドレススペースのアプリケーションと通信できる分散オブジェクトです。 EJBインスタンスは、スケルトンオブジェクトにカプセル化されており、スタブオブジェクトを介してクライアントと通信します。スタブにはビジネスロジックは含まれていませんが、ビジネスインターフェイスを実装します。スタブ商業インターフェイスの商用方法が呼び出されるたびに、スタブはネットワークメッセージをフレームワークに送信し、どの方法を呼び出したかを伝えます。フレームワークは、EJBインスタンスの対応する方法を呼び出し、EJBインスタンスによって返された結果をスタブに送信し、スタブはこれらの結果を対応するアプリケーションに返します。 2つの中間オブジェクト、スタブ、フレームワークを通じて、分散オブジェクト間の複雑な通信プロセスがブロックされます。フレームワークはコンテナによって実装されますが、スタブは開発ツールによって自動的に生成されますが、どちらも書き込みコードを必要としません。図2(EJBコンポーネント通信回路図)を参照してください。
図2:EJBコンポーネント間の通信の原則
3。EJB分類
EJBコンポーネントは、セッションビーンとメッセージ駆動型のBeanの2つのタイプに分けることができます。セッションBeanはビジネスロジックをカプセル化します。クライアントは、ローカル、リモート、およびWebサービスを介してセッションBeanメソッドを呼び出して、サーバーに展開されているアプリケーションにアクセスして、他の豆の方法を呼び出すことができます。セッションBeanは永続的ではありません。つまり、そのデータはデータベースに保存されません。その中には、セッションビーンには、ステートフルセッションビーンズ、ステートレスセッションビーンズ、シングルピースセッション豆の3つのタイプが含まれています。メッセージ駆動型の豆は、特定のタイプのメッセージのリスナーとしてよく使用され、Javaeeが非同期メッセージを処理できるようになり、クライアントはインターフェイスを介してメッセージ駆動型の豆にアクセスできません。
以下では、ステートフルセッションBean、Stateless Session Bean、シングルピースセッションBean、メッセージ駆動型セッションBeanを順番に紹介します。
4。ステートレスセッションビーン
ステートレスセッションビーンズは、クライアントにビジネスロジックのみを提供し、クライアントのセッション状態を保持しません。クライアントがステートレスセッションBeanのメソッドを呼び出すと、対応するセッションBeanのプロパティが呼び出しステータスを記述しますが、メソッド呼び出し中はこのステータスのみを維持します。メソッド呼び出しが終了すると、状態がクリアされます。
ステートレスセッション豆のライフサイクルは、コンテナによって制御されます。 EJBコンテナがクライアントのステートレスセッションBeanのリクエストを受信すると、EJBが存在しない場合、コンテナはBeanのインスタンスを作成し、必要なリソースをコンポーネントに注入し、コンテナがポストコンストラクトメソッドを呼び出し、コンポーネントが作成されます。この時点で、豆は「存在しない」状態から「存在」状態に移行します。クライアントの呼び出しが終了すると、コンテナはPredestroyメソッドを呼び出し、Beanが破壊されます。この時点で、豆は「存在する」状態から「既存の」状態ではない状態に変換されます。図3(ステートレスセッションBeanのライフサイクル)を参照してください。
図3:無国籍セッションBeanのライフサイクル
5。ステートフルセッションビーン
Stateful Session Beanは、ユーザー向けのセッション状態を保持します。さまざまなユーザーがステートレスセッションBeanのように共有するためにコンポーネントプールに配置することはできません。ステートフルセッションのBeanの場合、クライアントがリクエストを送信する限り、コンテナはクライアントに対応するインスタンスを作成し、1つのクライアントがインスタンスに対応します。生涯にわたって、Stateful Session Beanはユーザーの情報を維持し、セッションが終了すると、Stateful Session Beanのライフサイクルも終了します。
ステートフルセッションBeanには、存在、アクティブ、およびパッシベーションの3つのアクティブ状態があります。ステートフルセッションBeanが一定期間アクティブになった場合、外部クライアントからのリクエストがまだ受信されていない場合、システムリソースを保存するために、コンテナはステートフルセッションBeanの状態情報を一時的なストレージスペースにシリアル化し、ステートフルセッションBeanをメモリから削除します。このプロセスは「パッシベーション」と呼ばれます。コンテナは、パッシベーション前に射精能力を呼び戻します。コンテナがパッシブ化されたステートフルセッションビーンのリクエストを受信すると、ステートフルセッションBeanのインスタンスを再現し、ステータス情報を一時的なスペースから取り出してアクティブ状態に戻します。このプロセスは「アクティベーション」と呼ばれます。アクティベーション後、コンテナはProactivateメソッドを呼び出します。ステートフルセッションが一定期間依存すると、コンテナはインスタンスを完全にクリアし、プレストロイメソッドを呼び戻します。図4(ステートフルセッションBeanのライフサイクル)を参照してください。
図4:ステートフルセッションBeanのライフサイクル
6.シングルルームセッションBean
シングルピースセッションBeanは、アプリケーションごとに1回インスタンス化され、アプリケーションのライフサイクル全体に常に存在します。シングルピースセッションBeanは特定のシナリオ向けに設計されており、クライアントはこの一意のEJBインスタンスに共有モードで同時モードでアクセスできます。
シングルピースセッションBeanは、ステートレスセッションBeanに非常に似ています。違いは、シングルピースセッションBeanにはアプリケーションに1つのインスタンスしかないことがありますが、Stateless Session Beanには多くのインスタンスがあり、各インスタンスがユーザーが共有できるコンポーネントプールに配置されます。
シングルピースセッションビーンは、ステートレスセッションの豆のようなもので、決して動揺しません。そのライフサイクルには、「非存在」と「存在」という2種類の体のみが含まれています。図5(シングルピースセッションBeanのライフサイクル)を参照してください。
図5:シングルピースセッションビーンのライフサイクル
7。メッセージ駆動型の豆
メッセージ駆動型の豆は、メッセージベースのリクエストを具体的に処理するように設計されたコンポーネントです。メッセージ駆動型の豆は、Javaメッセージサービス(JMS)とEnterprise Beanの機能を統合します。クライアントは参照を直接取得してメソッドを呼び出すことはできませんが、システムメッセージによってのみ開始できます。
EJBコンテナは通常、メッセージ駆動型の豆のコンポーネントプールを作成します。ステートレスセッションの豆と同様に、メッセージ駆動型の豆は決して動揺しません。また、ライフサイクルには2つの段階しか含まれていません:非存在と存在。
メッセージ駆動型のBeanクラスは、MessageListenerインターフェイスを実装する必要があります。コンテナがキュー内のメッセージをBeanが聴いているというメッセージを検出すると、onmessage()メソッドを呼び出し、メッセージをパラメーターとして渡します。
J2EEの基本的なEJBの上記の包括的な理解は、私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。