2011-12-28 16 views
2

JBoss AS 5.1にデプロイされたEJB3.1を使用していますので、@EJBインジェクションを使用しています。別のEJBから呼び出されたときにうまく動作します。このBeanのように:EJB3.1 - JNDIルックアップなしで@EJB注入チェーンを開始できますか?

この他の豆

@Stateless(mappedName = "handler/MyHandler") 
public class MyHandler implements MyHandlerRemote { 

@EJB(mappedName = "daos/MyDao") 
private MyDaoRemote myDao; 

に注入され

@Stateless (mappedName = "daos/MyDao") 
public class MyDAO implements MyDaoRemote { 

@PersistenceContext(unitName = "myEm") 
private EntityManager em; 

しかし、私のアプリケーションは、POJOから始まります。私はあなたがEJBの外で@EJBの注入を使用することはできないと思います...だから、JNDIルックアップを使わずにMyHandlerを取得することは可能ですか?このコードは次のように動作します。

return (MyHandlerRemote) new InitialContext().lookup("handler/MyHandler"); 

しかし、私はこのルックアップを避けることが大好きです。 SeamとSpringでは、アノテーションのクラスのスキャンが簡単であるようです。

おそらく@EJB注入は必要ありませんが、コンテナに私のためのPersistenceContextと自動配線を管理させるのが好きです。

Weldのように思えるかもしれませんが、Springと同じようにJBoss AS 5.1でも動作するとは思えませんが、JNDIルックアップのないEJBの出発点があるようです。

ありがとうございます。

+1

あなたが達成しようとしているものは、CDIなしでは不可能です。 –

+2

これを試してください: Forty

+0

バマー... JSR-299の実装は私が知っているのはWeldとGuiceですかなり基本的な問題を解決するためにかなりの軽重のようなものです。 – javatestcase

答えて

3

Seamの@Inアノテーションを使用して、JNDIルックアップを行う必要なしに、SeamをJBoss AS 5.1で実行されるPOJOに注入することができます。

+0

Seamには慣れています。 SeamがJSRに向かう前にWeldのバージョンを使用して以来、かなり似ています。私は問題が本当に解決できるとは思わないので、これは私たちができることと同じくらい良いことです。 – javatestcase

関連する問題