2011-06-21 19 views
1

Iは、このEJB後で別のEJBを呼び出すメソッドを呼び出す - >リターンヌル

@Stateless 
public class CoreMainEJB implements CoreMainEJBRemote, CoreMainEJBLocal { 

    @Override 
    public void process(String configFileName) throws Exception { 
     ... 
     PackageProcessor p = new PackageProcessor(); 
     p.processPackage(Object something); 
    } 
} 

ような構造はPackageProcesor.javaを持っている - >@Stateless

public class PackageProcessor(){ 
    @EJB 
    private GenericEJB genericEJB; 

    public void processPackage(Object something){ 
     genericEJB.create(something); 

    } 
    ... 
} 

GenericEJBリターンの注入をアノテートされていませんヌル。ここでGenericEJB

@Stateless 
@LocalBean 
public class GenericEJB{ 
    @PersistenceContext(unitName = "someWebPUnit") 
    private EntityManager em; 

    public void create(Object t){ 
     em.persist(t); 
    } 
} 

の内容は、任意のアイデアである理由GenericEJBリターンヌルの注入?

答えて

3

あなたはこのようなオブジェクトを作成する場合:

PackageProcessor p = new PackageProcessor() 

EJBコンテナはそれについて何も知りませんが、コンテナがこのオブジェクトのライフサイクルを管理していないが、それはまた、何を注入面でそれをラップすることはできません、トランザクションの振る舞いを適用します。単純に言えば、アプリケーションサーバーの場合、このオブジェクトは存在しません。

もちろん、PackageProcessor@Statelessと注釈をつけて通常のEJBとして注入すればうまく動作します。あなたがこれをしたくない理由は何ですか?

+0

多くのEJBを持つことは悪い考えですか?あなたが言ったことをすれば、私は5〜6のEJBで終わるかもしれません。パフォーマンスの面で悪いですか?これらのメソッドを同じEJBに入れることと比較しますか?私はEJBの注入はパフォーマンスに影響を与えるのですか? 5-6 EJBはプロジェクトをはるかに重いものにしますか? –

+1

:-)。私は何百または何千ものEJBを持つプロジェクトを想像することができます...依存性注入は、Beanが最初に作成されるときの初期化時間にのみ影響します。その後、通常はプールされます。また、数行後にデータベースまたはJMSキューにアクセスするときに、パフォーマンスについて気にしないでください。 –

+0

ありがとうございました。 + 1 –

関連する問題