gpt4 book ai didi

java - EJB3实例化

转载 作者:搜寻专家 更新时间:2023-11-01 02:32:29 26 4
gpt4 key购买 nike

我有一些可能微不足道的问题。

如果我得到定义的 EJB3+ 接口(interface),可以说它是远程的:

@Remote
public class FooServiceRemote {
void foo();
}

和一个实现

@Stateless
public class FooService implements FooServiceRemote {
void foo() { ... }
}

如果应用服务器只知道依赖注入(inject)的@EJB 注解,比如在接口(interface)上,默认情况下它如何解析要使用什么实现(并通过代理调用):

public class SomeClass {
@EJB
private FooServiceRemote fooService;
}

它是通过反射(缩短接口(interface)名称)完成的吗?或者他扫描这种接口(interface)的可能实现,选择一个。或者.. ?如果我想创建一个接口(interface)的更多实现,是否可能以及如何指定应该实例化哪些实现怎么办(也许可以通过注释的一些参数实现)。

谢谢:-)

最佳答案

在极少数情况下,您需要让两个 bean 实现相同的接口(interface)(这不是一个好的做法),您可以为它们命名并根据名称选择您想要的一个。

@Stateless(name="FooService1")
public class FooService1 implements FooService { }

@Stateless(name="FooService2")
public class FooService2 implements FooService { }

public class SomeClass {
@EJB(beanName="FooService1")
private FooService fooService;
}

其他可能的方法是使用 JNDI 或 mappedName 属性查找它。请在此处查看 EJB 注释的 javadoc:http://download.oracle.com/javaee/6/api/javax/ejb/EJB.html

关于java - EJB3实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5811159/

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