2017-02-08 3 views
0

У меня следующая ситуация:Как я узок »вплоть до конкретного EJB при наличии несколько EJB-х

Два объекта EJB реализуют тот же интерфейс

@Stateless(name="theOne") 
public class EjbOne implements InterfaceOne { 
    ... 
} 

@Stateless(name="theSecond") 
public class EjbTwo implements InterfaceOne { 
    ... 
} 

Я хочу, чтобы ввести определенное EJB в a третий класс

@Stateless 
public class EjbThree { 
    @EJB(...???...mappedName="theOne"? name=...?) 
    private EjbOne ejbOne; 
} 

Как это сделать? (Разум, я использую @EJB, а не @Inject с @Qualifier) ​​

+0

Опечатка Я думаю, в третьем классе, вы, вероятно, используя InterfaceOne, не EjbOne. – Gimby

+0

@ Gimby тоже будет хорошо ... Идея в том, что я получаю экземпляр EjbOne –

+2

Вы уже это делаете. 'private EjbOne ejbOne;' Специально используя тип объекта EjbOne, это не может быть ничего. – Gimby

ответ

0

Вы ссылаетесь на конкретный класс private EjbOne ejbOne; Альтернативы не существует. Вы не используете интерфейс вообще, вместо этого вы должны ссылаться на это, если хотите использовать старый старый полиморфизм @EJB private InterfaceOne ejbOne, тогда ваш вопрос будет иметь смысл, что вы можете сделать:

a. @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

https://docs.oracle.com/javaee/7/api/javax/ejb/EJB.html

Смежные вопросы