18

私はJavaEEを理解し始めたところです。@Statefulクラスに注釈を追加したり、注釈を付けたり@Statelessすると、EJBBeanになることを私は知っています。しかし、私がそれを行うと、バックグラウンドで実際に何が起こっているのでしょうか?ウィキペディアにEJBに関連して以下がリストされています。

  • トランザクション処理
  • Java Persistence API(JPA)によって提供される永続化サービスとの統合
  • 同時実行制御
  • JavaメッセージサービスとJavaEEコネクタアーキテクチャを使用したイベント
  • 非同期メソッドの呼び出し

 

  1. クラスをEJBとしてマークすると、上記のアイテムはバックグラウンドで「処理」されますか?クラスをEJBにすると、上記のそれぞれを通過するまったく異なるコードパスがたどられますが、それは何が起こっているのでしょうか。
  2. CDIを使用すると、CDIBeanの代わりにEJBBeanを注入するオプションがあることがわかります。その場合、EJBBeanはCDIBeanよりも強力なので、常にCDIBeanの代わりにEJBBeanを使用する必要がありますか?
4

1 に答える 1

5

両方の質問に関する洞察については、この回答を参照してください。

その答えで焦点を当てるべきハイライトは次のとおりです。

  • EJBとCDIBeanはプロキシされたコンポーネントであり、取得するオブジェクトは偽物であり、実際のオブジェクトは非表示になり、サービスが追加される方法は次のとおりです。caller-> proxy-> services-> realObject
  • CDIとEJBは事実上同じであり、自由に組み合わせることができます。どちらを使用するかは、何をしようとしているかによって異なります。その回答にリストされている項目の1つが必要でない限り、私はCDIを使用する傾向があります。次に、新しいBeanをアップグレードまたは追加します。

その答えで私が見逃したことの1つは、全体の@MessageDriven概念でした。

MessageDriven Beans

JMS /コネクタを同じ行に配置するのは非常に興味深いことです。それは、まさにそれらの実装方法です。メッセージ駆動型Bean(MDB)は、実際には「コネクタ駆動型Bean」と呼ばれる必要があります。これは、MDBのすべての通信とライフサイクルが実際にはコネクタアーキテクチャの仕様に関連付けられており、JMSとは直接関係がないためです。JMSはコネクタの唯一の人々です。今まで見たことがあります。 そこには大きな可能性があります。うまくいけば、JavaEE7でいくつかの改善が見られるでしょう。

于 2012-12-18T21:16:30.313 に答える