2012-01-24 5 views
1

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

У меня есть класс 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; 

Thx, Daniel

+0

ли эта нить http://stackoverflow.com/questions/7920123/inject-ejb-bean-based-on-conditions/7923159#7923159 или это один Http: // StackOverflow .com/questions/7927681/select-ejb-to-be-injected-without-remompiling/7927814 # 7927814 способен решить вашу проблему? –

ответ

0

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

@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; 
+0

Я действительно пробовал и не работает. Весной я просто создавал экземпляр одного класса с разными именами экземпляров bean. – user585037

+0

Это все равно заставит меня иметь несколько интерфейсов. Я ищу, чтобы определить один интерфейс, один реализующий класс (который можно настроить в зависимости от введенных значений параметров) и иметь несколько экземпляров. – user585037

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