1

JSF を始めてからのコードを見直しています。最も複雑な問題の 1 つが再び発生しました。CDI と EJB の間の決定。

私は 3 つのレイヤーを使用していますが、それぞれにどのタイプのアノテーションを使用するのだろうかと思います: - バッキング Bean (MVC で定義されているコントローラー) - サービスレイヤー - DAO の

EJB から何も必要としない限り、バッキング Bean は CDI を使用しています。しかし、私は他の2つにこだわっています。プーリング機能のために EJB Bean を使用することについて読んだことを覚えています。これにより、大量のリクエスト (または、必要に応じて攻撃) を防ぐことができます。つまり、セキュリティやその他のもの (ViewScoped を除く) を考慮して、EJB (ステートレス、ステートフル、LocalBean など) を使用する理由はありますか?

前もって感謝します。

4

2 に答える 2

4

ここで概念的な間違いを犯しています。CDI は EJB に代わるものではありません。デフォルトのトリムの CDI は、トランザクション管理をまったく提供しません。CDI は、Bean 管理および依存性注入 API であり、サービス層 API ではありません。CDI でトランザクションを管理するには、別の API を追加して、別の注釈を追加する必要があります。

たとえば、CDI は JSF マネージド Bean アノテーションを置き換えることができますが、EJB アノテーションを置き換えることはできません。

したがって、有効な「CDI vs EJB」の質問の手段はありません。どちらも完全に異なる独自の目的を持っています。EJB ベースのサービス クラスを CDI ベースのマネージド Bean クラスに完全に注入できることに注意してください。

セキュリティに関しては、タイトルとタグでその部分に言及した理由が明確ではありませんが、CDI と EJB の間の決定はセキュリティとは何の関係もありません (単純に、有効な「CDI vs EJB」の質問の手段がないためです)。 )。

于 2012-10-22T17:45:08.063 に答える
0

はい、トランザクション、同時実行、プーリングなどのすぐに使えるサポートが必要な場合。

于 2012-10-22T17:22:51.753 に答える