4

@EJBアノテーションを使用してステートレス セッション Bean を注入するよりも JNDI を使用する方がよい状況はありますか?

Sun Application Server 9.0_01 で JSF 1.2 を使用しています。

私たちのチームは、マネージド Bean で SLSB を使用する場合にどちらのアプローチが優れているかを議論しています。

次の質問を読みましたが、ルックアップが優先される状況があるかどうか疑問に思っていました。

4

3 に答える 3

4

@EJB アノテーションを使用してステートレス セッション Bean を注入するよりも JNDI を使用する方がよい状況はありますか?

より良い状況はありませんが、必要な状況では:

  • ルックアップする名前がコンパイル時に不明な場合 (設計が悪いと思いますが、それは別の問題です)
  • アノテーションがサポートされていない場合、たとえば、通常の管理されていないヘルパー クラスやその他のいくつかのケース (これらのクラスで EJB に依存することが良いか悪いかについて再度議論することができます)。

検索する名前が一定で、インジェクションが可能な場合は、@EJB注釈を優先します。

  • テストを簡単にする
  • ローカル/グローバル JNDI 名を理解する手間が減る
于 2012-10-02T12:39:38.033 に答える
3

SFSB の場合は JNDI ルックアップが重要かもしれません (常に同じインスタンスにアクセスするようにしてください)。

私は間違いなく一緒に行き@EJBます。読みやすく (エラーが発生しやすいコードが少ない)、保守しやすく (Bean の JNDI 名前空間の場所を気にする必要がない)、テストしやすい (単体テストを実行するときに切り捨てる必要がある面倒なルックアップ コードがない)。

パフォーマンスの理由について話すとき - 100% 確信があるわけではありませんが、アノテーションを使用するときにアプリケーション サーバーが実際に舞台裏で JNDI ルックアップを行っていても驚かないでしょう。

于 2012-10-02T09:03:08.400 に答える
1

@EJB アノテーションを使用してステートレス セッション Bean を注入するよりも JNDI を使用する方がよい状況はありますか?

SLSB の JNDI ルックアップを必要とする具体的な状況については、この質問と相対回答: JPA 継承と EJB ポリモーフィズムで説明されています。基本的に、SLSBのクラス名は実行時に決定されます。

于 2012-10-02T09:12:37.870 に答える