4

在任何情况下,使用 JNDI 比使用@EJB注解注入无状态会话 bean 更好吗?

我们将 JSF 1.2 与 Sun Application Server 9.0_01 一起使用。

我们的团队正在讨论在托管 Bean 中使用 SLSB 时哪种方法更好。

我已阅读以下问题,但想知道是否存在首选查找的情况。

4

3 回答 3

4

是否存在使用 JNDI 比使用 @EJB 注释注入无状态会话 bean 更好的情况?

没有更好的情况——但有必要的情况:

  • 当在编译时不知道要查找的名称时(我认为这是糟糕的设计,但这是另一个问题)
  • 当不支持注释时,例如在常规的非托管帮助类和其他少数情况下(我们可以再次争论在这些类中依赖 EJB 是好还是坏)。

如果要查找的名称是常量并且可以注入,则首选@EJB注释:

  • 让测试更容易
  • 找出本地/全局 JNDI 名称的麻烦更少
于 2012-10-02T12:39:38.033 回答
3

JNDI 查找在 SFSB 的情况下可能很重要(确保始终访问相同的实例),但在 SLSB 的情况下,我不知道 JNDI 会以任何方式“更好”的任何情况。

我肯定会去@EJB。它更易于阅读(不易出错的代码)、更易于维护(您不必关心 bean 的 JNDI 命名空间位置)并且更易于测试(在执行单元测试时无需切断讨厌的查找代码)。

当谈到性能原因时——我不是 100% 肯定,但如果当您使用注释时应用程序服务器实际上正在幕后进行 JNDI 查找,我不会感到惊讶。

于 2012-10-02T09:03:08.400 回答
1

是否存在使用 JNDI 比使用 @EJB 注释注入无状态会话 bean 更好的情况?

这个问题和相关答案描述了需要 JNDI 查找 SLSB 的具体情况:JPA Inheritance and EJB polymorphism。本质上,当 SLSB 的类名在运行时确定时。

于 2012-10-02T09:12:37.870 回答