多个@Qualifier EJB注入

时间:2016-12-12 12:28:58

标签: interface ejb multiple-instances qualifiers

我有2个EJB实现相同的接口,我有一些限定符:

@java.lang.annotation.Documented
@java.lang.annotation.Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE,ElementType.FIELD})
@javax.inject.Qualifier
public @interface PayEseConnector {

}

@java.lang.annotation.Documented
@java.lang.annotation.Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE,ElementType.FIELD})
@javax.inject.Qualifier
public @interface MetrilioConnector {

}

EJB的例子:

@Stateless
@PayEseConnector
@Local
public class PayEseServiceImpl implements IConnectorService {

@Stateless
@MetrilioConnector
@Local
public class MetrilioServiceImpl implements IConnectorService {

我将其中一个注入课堂:

公共类TestResource {

@MetrilioConnector
@Inject 
IConnectorService metrilioService;

和我的错误:

引起:org.jboss.weld.exceptions.DeploymentException:WELD-001408:带有限定符的类型IConnectorService的不满意的依赖项@MetrilioConnector   注入点[UnbackedAnnotatedField] @MetrilioConnector @Inject com.real.hr.rest.TestResource.metrilioService   在com.real.hr.rest.TestResource.metrilioService(TestResource.java:0) WELD-001475:以下bean按类型匹配,但没有匹配的限定符:    - 会话bean [带有限定符的类com.real.hr.services.MetrilioServiceImpl [@MetrilioConnector @Any];本地接口是[IConnectorService],    - 会话bean [带有限定符的类com.real.hr.services.PayEseServiceImpl [@PayEseConnector @Any];本地接口是[IConnectorService]

我做错了什么?有一个@Qualifier它正在运作

1 个答案:

答案 0 :(得分:0)

最后,示例是OK,错误是我重命名了一个包并且仍然存在依赖关系,因此您可以使用此示例使EJB的简单限定符实现相同的接口,通常@Local不是必需的...