【问题标题】:@EJB injection and the Enterprise Naming Context - relation between the two@EJB 注入和企业命名上下文 - 两者之间的关系
【发布时间】:2009-06-23 22:41:02
【问题描述】:
Java EE 规范声明这样的 EJB 注入:
@EJB MyInterface myBean;
将在企业命名上下文中创建条目,即。 java:comp/env/<FQN>.MyInterface/myBean。由部署者将此上下文条目绑定到一个真实值并将此值注入到 myBean 字段中。
现在我觉得我在这里遗漏了一些东西:
为什么需要上下文条目?所请求的 EJB 实例将被注入,那么为什么需要上下文中的条目呢?为什么注入必须通过上下文条目发生?
【问题讨论】:
标签:
java
ejb-3.0
java-ee-5
【解决方案1】:
所有收到的答案都没有解决问题:如果注入注释提供了足够的信息来解决注入,为什么需要 ENC 条目(所以我的第一个想法是它是多余的)。
答案是可以在部署描述符中覆盖注入。这是因为 EJB 标准定义了开发人员角色。
它假定“bean 提供者”可以请求注入,甚至提供默认值。但是“应用程序汇编器”可以覆盖这些值。假定“bean 提供者”使用注解或 XML,假定“汇编器”主要使用 XML。
这就是 EJB 标准定义 ENC 和注入之间的这种关系的原因。
【解决方案2】:
我认为,如果您需要注入一个有状态会话 Bean,您将需要一些上下文来了解您的 EJB 实例和一些先前注入的 EJB 依赖项(到该实例)之间的关系。