我阅读了这篇关于 EJB-JNDI 映射最佳实践的精彩文章:
http://www.ibm.com/developerworks/websphere/library/bestpractices/increase_app_portability.html
我不清楚 ejb-link 的概念。
例如,假设我们有一个包含以下内容的 ejb-jar.xml:
<ejb-ref>
<ejb-ref-name>ejb/Bean2Home</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>com.ibm.wsc.Bean2Home</home>
<remote>com.ibm.wsc.Bean2</remote>
<ejb-link>Bean2</ejb-link>
</ejb-ref>
因此,可以确定目标 EJB 组件是 Bean2,这个简单的表示法意味着必须在该 J2EE 应用程序包或 .ear 文件中找到 Bean2。
那么,如果 ejb-link 标记足以决定链接到良好 EJB 组件的正确方式,那么汇编程序需要为该 ejb-ref 创建 JNDI 名称吗?
真的有用吗?
最佳答案
以下一些场景有望阐明原因 <ejb-link/>
(或 @EJB(beanName="...")
)和 EJB 引用绑定(bind)既有用又互补:
应用程序本身可以在逻辑上分解为组件,开发人员选择使用 EJB 来实现这些组件。在这种情况下,应用程序开发人员知道客户端想要使用的目标 EJB 组件。如果有多个组件实现相同的接口(interface),则需要进行一些消歧,并且
<ejb-link/>
可以使用。应用程序依赖于外部服务。在这种情况下,应用程序知道它依赖于外部服务,因此
<ejb-link/>
无法使用,因为同一应用程序中不存在该服务实现。应用程序依赖于外部服务,但同一应用程序中提供了最小的实现。在这种情况下,开发人员可能会使用
<ejb-link/>
如#1 中所示,但部署者可以像#2 中那样灵活地覆盖该选择。
关于java - 了解 ejb-link 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9066654/