Jakarta ee 使用部署描述符的EJB注入
我对注入Jakarta ee 使用部署描述符的EJB注入,jakarta-ee,dependency-injection,ejb,Jakarta Ee,Dependency Injection,Ejb,我对注入EJB的各种方法感到有点困惑,因此,如果有人能解释以下一个或多个主题,我将不胜感激: 1) 通过注释注入EJB并指定“name”或“lookup”时有什么区别。例如: @EJB(name="ejb/mybean") // or @EJB(lookup="ejb/mybean") @Stateless public class MyStateless implements BusinessLocalInterface{ ... } 我认为“name”可以在“java:comp/env
EJB
的各种方法感到有点困惑,因此,如果有人能解释以下一个或多个主题,我将不胜感激:
1) 通过注释注入EJB
并指定“name”
或“lookup”
时有什么区别。例如:
@EJB(name="ejb/mybean") // or @EJB(lookup="ejb/mybean")
@Stateless
public class MyStateless implements BusinessLocalInterface{
...
}
我认为“name”
可以在“java:comp/env/…”
下进行查找,但是使用“lookup”
可以做些什么呢
2) 而是在ejb jar.xml
中执行注入,即:
<ejb-local-ref>
<ejb-ref-name>ejb/MyBean</ejb-ref-name>
<local>pl.LocalInterface</local>
<ejb-link>BeanClass</ejb-link>
<injection-target>
<injection-target-class>pl.MyClass</injection-target-class>
<injection-target-name>targetName</injection-target-name>
</injection-target>
</ejb-local-ref>
ejb/MyBean
pl.LocalInterface
比恩克拉斯
pl.MyClass
目标名称
和
之间有什么区别
什么是
注入目标
元素,可以用它们实现什么,何时使用它们?您可以在两种场景中使用@EJB注释
在您的应用程序中,当您想要注入bean时
@EJB
MyStateless myStateless
在第二个场景中,您还可以使用lookup参数定义要注入的EJB的JNDI路径。例如,如果EJB是不同EAR甚至不同应用服务器中的远程接口,则主要使用此选项
@EJB(lookup = "ejb:otherEar/modulename/MyStateless!com.yourcomp.MyStateless")
MyStateless myStateless
3.)关于CDI的一些评论:@EJB比@Inject旧,并且提供了更多和EJB特定的参数,尽管只要您只将EJB用作简单的本地服务,就可以尝试使用@Inject,因为这样您就可以使用其他功能,如生产者等。有时根本不需要EJB:)我不寻求替代方案。我需要特定问题的答案,我认为你的答案没有提供足够的澄清。你的问题是:“但是,使用“查找”可以做什么不同的事情?”。。。我试图回答何时使用查找以及为什么使用查找。声明EJB时不使用@EJB/lookup参数,而仅在注入期间使用。