gpt4 book ai didi

jakarta-ee - 使用部署描述符的 EJB 注入(inject)

转载 作者:行者123 更新时间:2023-12-03 20:35:08 27 4
gpt4 key购买 nike

我对注入(inject) EJB 的多种方式感到有点困惑。因此,如果有人能对以下一个或多个主题做出解释,我将不胜感激:

1) 注入(inject) 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 中进行注入(inject)相反,即:

<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-local-ref> 之间有什么区别?和 <ejb-ref>

什么是 injection-target元素,用它们可以达到什么目的,什么时候使用它们?

最佳答案

您确实在两种情况下使用了@EJB 注释。

当你想注入(inject)bean时在你的应用程序中

@EJB
MyStateless myStateless

在第二种情况下,您还可以使用查找参数来定义要注入(inject)的 EJB 的 JNDI 路径。这主要用于例如如果您的 EJB 是不同 EAR 甚至不同应用程序服务器中的远程接口(interface)

@EJB(lookup = "ejb:otherEar/modulename/MyStateless!com.yourcomp.MyStateless")
MyStateless myStateless

3.) 关于 CDI 的一些评论:@EJB 比 @Inject 更早,并且提供更多 EJB 特定参数,但只要您仅将 EJB 用作简单的本地服务,请尝试使用 @Inject,因为您可以使用生产者等其他功能。有时根本不需要 EJB :)

关于jakarta-ee - 使用部署描述符的 EJB 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22192208/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com