0

Java Bean (JB) と Enterprise Java Bean (EJB) の違いを理解できたと思います。この質問に対する答えはたくさんあります。しかし、私が本当に答えを見つけられなかったのは:

JSF を使用して Java EE ソフトウェアをコーディングする場合、(モデルのように CDI を必要としない) すべてを EJB でコーディングするか、EJB に利点があると思われるものだけをコーディングするかを選択する必要があります。たとえば、ステートレス EJB が可能な場合のパフォーマンスのため、またはトランザクション管理が必要なためですか?

たとえば、オンライン計算機をコーディングしたいとします。ビューのモデルは CDI です。しかし、モデルの要求に応じて計算を行うクラスはどうなりますか。EJB を使用する理由はありますか?

4

2 に答える 2

1

ステートレス セッション Bean はプールされ、クライアントからの単一の呼び出しに「割り当て」られます。

これは、それらが自動的にスレッドセーフであることを意味し、それらのリソースを何度も何度も作成したり、Bean を共有スコープ (スレッドセーフの問題が発生する可能性がある場所) に置いたりする必要なく、リソースを作成するために高価なままにしておくことができます。

これが必要な状況に陥った場合、ステートレス Bean を使用するとパフォーマンスを向上させることができます。

また、ステートレス セッション Bean を使用するときに発生する暗黙的な要求スロットリングによって、システムのパフォーマンスを安定させることもできます。プールが使い果たされると、Bean への新しい要求は受け入れられなくなります。これは、システムの過負荷を防ぐのに役立ちます。通過したコールはより良いサービスを体験できますが、一部のコールはドロップされます。これは一般的に、すべての発信者が非常に遅い応答を受け取るよりも良い状況です。

次に、Java EE タイマー サービスなど、現在 EJB Bean でのみ使用できるサービスがいくつかあります。このサービスやその他のサービスをすべての Bean で利用できるようにするという要求がありましたが、Java EE 6 および Java EE 7 でさえ EJB のみです。

于 2013-07-07T10:27:39.980 に答える
0

EJB を使用する主な理由は、自動トランザクション処理です。データベースの作業を行っていない場合、EJB を使用してもあまりメリットはありません。EJB を使用してもパフォーマンス上の利点はありません。

于 2013-07-03T10:16:34.660 に答える