2016-12-12 25 views
0

у меня есть два EJB реализует тот же интерфейс, я есть спецификатор:множественного @Qualifier 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 at com.real.hr.rest.TestResource.metrilioServ ice (TestResource.java:0) WELD-001475: Следующие бит по типу, но ни один из них не имеет соответствующих квалификаторов: - Session bean [класс com.real.hr.services.MetrilioServiceImpl с квалификаторами [@MetrilioConnector @Any]; локальные интерфейсы [IConnectorService], - Session bean [класс com.real.hr.services.PayEseServiceImpl с квалификаторами [@PayEseConnector @Any]; локальные интерфейсы [IConnectorService]

, что я делаю неправильно ?, с одной @Qualifier он работает

ответ

0

Наконец пример OK ошибка была я переименовал пакет и зависимость все еще присутствует, так что вы можете использовать этот пример, чтобы сделать простой Qualifier для EJB реализует тот же интерфейс, обычно @Local не является обязательным ...