EJB 3.0 несколько экземпляров - PullRequest
1 голос
/ 25 января 2012

Я пытался выяснить, возможно ли это, но не могу получить на него ответ.

У меня есть класс EJB 3.0 и его локальный интерфейс.

@Local
public interface MyService {
    public String foo();
}

@Stateless
public class MyServiceBean implements MyService {
    @Resource(name="type") private String type;
    public String foo() { return type; }
}

Теперь вот вопрос.Я хочу определить два EJB-компонента с разными именами, использующими один и тот же класс, чтобы я мог ввести два разных значения типа (определенные в ejb-jar.xml).

Затем, используя это в другом классе,например:

@EJB(mappedName="MyServiceBeanA")
private MyService myServiceBeanA;

@EJB(mappedName="MyServiceBeanB")
private MyService myServiceBeanB;

Спасибо, Даниэль

1 Ответ

0 голосов
/ 25 января 2012

Я не пробовал сам, но я бы посоветовал вам попробовать и посмотреть, работает ли он, но я верю, что если не получится, вы можете создать супер интерфейс, который расширяет два локальных интерфейса. Вы хотите, чтобы ваши бины реализовали этот новый супер интерфейс. Тогда вы могли бы назвать это как

@Local
public interface MyService1 {
    public String foo();
}

@Local
public interface MyService2 {
    public String foo();
}



public interface SuperInterface extends MyService1, MyService2{

}

@Stateless
public class MyServiceBean implements SuperInterface {
    @Resource(name="type") private String type;
    public String foo() { return type; }
}


@EJB(mappedName="MyServiceBeanA")
private SuperInterface myServiceBeanA;

@EJB(mappedName="MyServiceBeanB")
private SuperInterface myServiceBeanB;
...