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