我在不使用Dependency Injection
的情况下研究EJB
的{{1}},并且出现了两个问题。我很感激任何人都可以回答以下问题:
1)是否可以在CDI
内注入带有Stateful
注释的会话Bean(Stateless
ot @EJB
)?
2)如果让两个Session Beans实现相同的接口,是否可以使用Message Driven Beans
注释注入它们仅指定接口名称?如何让@EJB
知道要注入的特定Bean类?例如:
Container
如何在不使用@Remote
public interface RemoteInterface{}
@Stateless
public class BeanA implements RemoteInterfaceA{}
@Stateless
public class BeanB implements RemoteInterfaceA{}
@Stateful
public class StatefulBean{
@EJB
RemoteInterface
}
和Qualifiers的情况下指定注入哪个Bean?
答案 0 :(得分:1)
1)当然,当您在MDB中收到消息时,通常需要从某个服务EJB调用方法。
2)有可能,您可以命名您的bean,然后按名称注入它,请参阅我的示例
@Stateless(name="bean1")
public class BeanA implements RemoteInterfaceA{}
@Stateless(name="bean2")
public class BeanB implements RemoteInterfaceA{}
@Stateless
public class Bean3 {
@EJB(beanName="bean1")
private RemoteInterfaceA bean;
//first bean should get injected here
}