2017-02-08 4 views
0

I次のような状況があります。私がある場合、特定のEJBまで「狭い」を実行どのように複数のEJBの

EJBのは

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

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

は私がに特定のEJBを注入したい同じインタフェースを実装する二つの第3クラス

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

どうすればよいですか? (私は@EJBを使用していますが、@Qualifierで@Injectを使用していません)

+0

私が思う誤植、第三のクラスでは、おそらくInterfaceOne、ないEjbOneを使用しています。 – Gimby

+0

@Gimbyのいずれかがうまくいくでしょう...アイデアは、私がEjbOneのインスタンスを取得することです –

+2

あなたはすでにそれをやっています。 'private EjbOne ejbOne;'特にEjbOneオブジェクト型を使うことで、他のものにすることはできません。 – Gimby

答えて

0

具体的なクラスを参照していますprivate EjbOne 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

関連する問題