我有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它正在运作
答案 0 :(得分:0)
最后,示例是OK,错误是我重命名了一个包并且仍然存在依赖关系,因此您可以使用此示例使EJB的简单限定符实现相同的接口,通常@Local不是必需的...