在任何情况下,使用 JNDI 比使用@EJB
注解注入无状态会话 bean 更好吗?
我们将 JSF 1.2 与 Sun Application Server 9.0_01 一起使用。
我们的团队正在讨论在托管 Bean 中使用 SLSB 时哪种方法更好。
我已阅读以下问题,但想知道是否存在首选查找的情况。
在任何情况下,使用 JNDI 比使用@EJB
注解注入无状态会话 bean 更好吗?
我们将 JSF 1.2 与 Sun Application Server 9.0_01 一起使用。
我们的团队正在讨论在托管 Bean 中使用 SLSB 时哪种方法更好。
我已阅读以下问题,但想知道是否存在首选查找的情况。
是否存在使用 JNDI 比使用 @EJB 注释注入无状态会话 bean 更好的情况?
没有更好的情况——但有必要的情况:
如果要查找的名称是常量并且可以注入,则首选@EJB
注释:
JNDI 查找在 SFSB 的情况下可能很重要(确保始终访问相同的实例),但在 SLSB 的情况下,我不知道 JNDI 会以任何方式“更好”的任何情况。
我肯定会去@EJB
。它更易于阅读(不易出错的代码)、更易于维护(您不必关心 bean 的 JNDI 命名空间位置)并且更易于测试(在执行单元测试时无需切断讨厌的查找代码)。
当谈到性能原因时——我不是 100% 肯定,但如果当您使用注释时应用程序服务器实际上正在幕后进行 JNDI 查找,我不会感到惊讶。
是否存在使用 JNDI 比使用 @EJB 注释注入无状态会话 bean 更好的情况?
这个问题和相关答案描述了需要 JNDI 查找 SLSB 的具体情况:JPA Inheritance and EJB polymorphism。本质上,当 SLSB 的类名在运行时确定时。