2013-03-24 5 views
5

なぜ私はEJBを使うべきですか?私は他の方法で得ることができないものから何を得ることができますか?EJBをPOJOに比べて使用する利点は何ですか?

EJBをPOJOに比べて使用する利点は何ですか?

+5

宣言型分散トランザクション、宣言型セキュリティ、依存性注入、自動スレッドセーフティ、ステートフルBean、パッシベーションとアクティベーション、リモーティングなど –

答えて

6

EJBsは、Java EEアプリケーションサーバーによって管理され、監視されます。依存関係の注入とそれらの管理をクライアントに提供します。lifecycles。 EJBはプール内のapp-serverによって保持されます。クライアントがEJBを取得するたびに、app-serverはプールから1つを選択し、それをクライアントに割り当てます。クライアントは、クライアント側で処理が完了した後(クライアント側には参照がありません)、プールに戻され、他のクライアントに割り当てることができます。

プーリングは、アプリケーションのスケーラビリティにとって非常に重要です。増加する負荷に対処するために、配備されたアプリケーションに何も変更する必要はなく、リソースの量が限られているため負荷が高すぎると、アプリケーションはアプリケーションサーバーを膝に乗せません。すべては、アプリケーションサーバーを設定することによって行われます。

EJBは、それに応じて注釈が付けられていると、トランザクションと非同期実行を処理し、リモートクライアントに公開することができます。

セッションBean

  1. Stateless EJBs

    は、EJBの4種類があり、クライアントは、サーバがそれを割り当てることができので、状態を保持するために使用することができない、いくつかの操作を実行して返すことができるようになります他のクライアント(これはクライアント間の通信の一種として使用することができます。たとえば、インスタンス変数がある場合は値に設定し、他のクライアントはこの値を見ることができます)。ステートレスEJBメソッドは、機能的なプログラミングやクラスの静的メソッドと同じように考えることができます。

  2. Statefull EJBs:名前はサーバがこのインスタンスであることを保証言うように:クライアントが複数の要求(クライアントがそれへの参照を保持しなければならないそうでない場合は、アプリケーションサーバが別のクライアントに割り当てること)
  3. Singleton EJBs間で状態を維持することができますアプリケーション全体で一意です。

メッセージ駆動型Bean

  1. Message driven EJBsは:また、ステートレスで、JMSとの組み合わせで、通常はメッセージを送受信するために使用しました。メッセージハンドラ関数は非同期に実行されます。

EBJはこれをすべて提供しますが、他のものもありますが、POJOは単なるPOJOです。

+0

>クライアントはそれを参照する必要があります。そうしないと、これは完全に真実ではありません。アプリケーションサーバーには、クライアントと実際にまだ参照があるかどうかを確認するためのGCとの特別なやり取りはありません。これは、 '@ Remove'メソッドが呼び出された後に、再設定され、再割り当てされる可能性があります。より一般的には、他のクライアントは新しいBeanを取得します。プールは 'Stateless' Beanでより一般的です。 –

+0

これは、クライアントとしてサーブレットを使い、ステートフルセッションBeanに '@ LocalBean'を使用して数ヶ月前に行ったいくつかのテストに基づいています。私は(ウェブ)セッションに入れるだけで状態を維持することができました。 – A4L

+0

...魔女は、まだ答えられていない - 'セッションBean'の' session'は何ですか?あなたがそれについてのさらなる読書のためのいくつかのリンクを持っているなら、私は感謝します! – A4L

関連する問題