@EJB注解与JNDI查找

4
3个回答

5
是否有某些情况下,使用JNDI比使用@EJB注解注入无状态会话bean更好?
没有这样的情况,但有一些必要的情况:
- 当要查找的名称不是在编译时已知(我认为这是不好的设计,但这是另一个问题); - 当注解不被支持时,例如在常规非托管辅助类和其他几种情况下(我们可以再次争论依赖于这些类中的EJB是好还是坏)。
如果要查找的名称是恒定的,并且可以进行注入,则优先选择@EJB注解:
- 使测试更容易 - 减少找到本地/全局JNDI名称的麻烦。

4

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

我肯定会选择@EJB。它更容易阅读(代码更少容易出错),更易于维护(您不需要关心bean的JNDI名称空间位置),并且更易于测试(执行单元测试时,无需剪切难看的查找代码)。

谈到性能原因时,我不是100%确定,但当使用注释时,应用服务器似乎在幕后执行JNDI查找也并不奇怪。


1
有没有一种情况,比起使用@EJB注释注入无状态会话bean,使用JNDI更好?
在这个问题和相关答案中描述了需要JNDI查找SLSB的具体情况:JPA Inheritance and EJB polymorphism。基本上,当SLSB的类名在运行时确定时。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接