资源注入ejb

时间:2015-11-10 18:21:21

标签: java java-ee ejb

我不理解11/19/2015 07:17 PM注释的lookup参数和name参数之间的区别。我阅读了有关注释及其字段等的所有文档。

我知道@Resource如何用于注入或绑定资源,但问题是找不到任何解释namelookup之间差异的示例。

有人可以给我一个这样的例子或告诉我他们之间的区别吗?

1 个答案:

答案 0 :(得分:1)

namejava:comp/env命名空间中的“虚拟”引用名称。在某种程度上,该引用需要指向已定义的“物理”资源。标准的方法是使用lookup属性,但产品也可以“绑定”资源引用,因此在许多产品中,特定于产品的绑定在功能上等同于名称。 (特定于产品的绑定仍然很重要,因为您不希望依赖开发人员对操作环境中的数据源名称进行硬编码等。)

例如,您可能有@Reference(name="jdbc/myDS", lookup="jdbc/oracleDS"),这意味着java:comp/env/myDS将被定义为对绑定到默认JNDI名称空间的jdbc/oracleDS数据源的间接查找。

另一个例子,您可能有@DataSourceDefinition(name="derbyDS")@Resource(name="jdbc/myDS", lookup="java:comp/env/derbyDS")。前者定义了一个实际数据源(再次相对于java:comp),后者定义了对它的间​​接查找。