множественная инъекция @Qualifier EJB

у меня есть 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 {

or

@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-компоненты совпадают по типу, но ни один из них не имеет совпадающих квалификаторов: — Session bean [класс com.real.hr.services.MetrilioServiceImpl с квалификаторами [ @MetrilioConnector @Any]; локальные интерфейсы: [IConnectorService], - Session bean [класс com.real.hr.services.PayEseServiceImpl с квалификаторами [@PayEseConnector @Any]; локальные интерфейсы [IConnectorService]

что я делаю не так?, с одним @Qualifier все работает


person cyril    schedule 12.12.2016    source источник


Ответы (1)


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

person cyril    schedule 13.12.2016