Java EE 6では、さまざまなマネージドBean(JSFマネージドBean(@ManagedBean)、CDIマネージドBean(@Named)、EJB Bean(@ Stateless、@ Statefull、@ Singleton))の間にいくつかの重複があります。
ビューレイヤーでは、@ManagedBeanを使用することに特に利点はありません。CDIバリアント@Namedは、同じ以上のことを実行できるようです。たとえば、変換スコープへのアクセスを提供します。
現在の考え方では、最終的にはEJBコンポーネントモデルもCDIアノテーションのセットとして後付けされると思われます。特に専門家グループのメンバーであるRezaRahmanは、これを頻繁にほのめかしています。たとえば、JavaEE6-パート1での依存性注入を参照してください。
当面はこれが発生していないため、EJB Beanは、特にJPAが永続性に使用される場合に、ビジネスロジックを配置する最も簡単な場所であり続けます。
それでも、CDIがEJBの機能を取得するかどうかにかかわらず、IMHOは、「バッキングBean」の概念に別のBeanを使用し、「ビジネスロジック」に別のBeanを使用することをお勧めします。
バッキングBeanは、モデルオブジェクトとサービス(EJB)への参照を含むだけで、非常にスリムにすることができます。バッキングBeanのアクションメソッドは、ほぼ直接サービスに委任できますが、その付加価値は、ユーザーにフィードバックを提供し(成功または失敗時にFacesMessagesを追加する)、UIを少し変更する(たとえば、ブール値をfalseに設定してダイアログを表示する)ことです。 。
サービス(ビジネスロジック)は、特定のプレゼンテーションについて何も知らないはずです。これらは、JSFバッキングBean、JAX-RS、サーブレット、スタンドアロンJavaSEリモートクライアントなどからも同様に使用できる必要があります。
すべてのBeanがCDIBeanになったとしても、これによってこの基本的な責任分担が変わることはありません。