当有多个 EJB 时,如何 'narrow' 到特定的 EJB
How do I 'narrow' down to a specific EJB when there are multiple EJB's
我有以下情况:
两个 EJB 实现相同的接口
@Stateless(name="theOne")
public class EjbOne implements InterfaceOne {
...
}
@Stateless(name="theSecond")
public class EjbTwo implements InterfaceOne {
...
}
我想将特定的 EJB 注入第三个 class
@Stateless
public class EjbThree {
@EJB(...???...mappedName="theOne"? name=...? )
private EjbOne ejbOne;
}
我应该怎么做?
(请注意,我使用的是@EJB,而不是带有@Qualifier 的@Inject)
您引用的是混凝土 class private EjbOne ejbOne;
别无选择。你根本没有使用接口,如果你想使用好的旧多态性,你应该像这样引用 @EJB private InterfaceOne ejbOne
那么你的问题就有意义了,你可以做的是:
一个。 @EJB(beanName="EjbOne") private InterfaceOne ejbOne
b。 @EJB(lookup ="jndi-address") private InterfaceOne ejbOne
c。 @EJB(mappedName="vendor-specific-address") private InterfaceOne ejbOne
d. @EJB(name="java:comp/env like logical name") private InterfaceOne ejbOne
我有以下情况:
两个 EJB 实现相同的接口
@Stateless(name="theOne")
public class EjbOne implements InterfaceOne {
...
}
@Stateless(name="theSecond")
public class EjbTwo implements InterfaceOne {
...
}
我想将特定的 EJB 注入第三个 class
@Stateless
public class EjbThree {
@EJB(...???...mappedName="theOne"? name=...? )
private EjbOne ejbOne;
}
我应该怎么做? (请注意,我使用的是@EJB,而不是带有@Qualifier 的@Inject)
您引用的是混凝土 class private EjbOne ejbOne;
别无选择。你根本没有使用接口,如果你想使用好的旧多态性,你应该像这样引用 @EJB private InterfaceOne ejbOne
那么你的问题就有意义了,你可以做的是:
一个。 @EJB(beanName="EjbOne") private InterfaceOne ejbOne
b。 @EJB(lookup ="jndi-address") private InterfaceOne ejbOne
c。 @EJB(mappedName="vendor-specific-address") private InterfaceOne ejbOne
d. @EJB(name="java:comp/env like logical name") private InterfaceOne ejbOne