ヘルパクラスにエンティティマネージャを挿入しようとしていますが、これをセッションBeanからヘルパーに渡すことはできますが、問題は静的initでエンティティマネージャを使用することですヘルパークラス(のようないくつかのこと)のブロック:EJBヘルパークラスのエンティティマネージャを検索する
class MySessionBeanHelperClass
{
// staff here...
static
{
SomeClass s = new SomeClass(entityManager);
}
}
だから、私は唯一の方法は、それを注入するのではなく、エンティティマネージャをルックアップすると思います。渡されたSessionContentを使用してもここでは動作しません。
2番目の質問は次のとおりです。 通常の方法でリソース(この場合はエンティティマネージャ)を検索した場合(次のようなものです:)
Context ic = new InitialContext();
em = (EntityManager) ic.lookup("java:comp/env/persistence/em");
これは、このエンティティマネージャが使用するすべてのトランザクションを、Bean管理のトランザクションに変換しますか?
ありがとうございます!
'これはEJBの既知の問題です。アプリでワンタイムタスクを実行する「標準的な」方法はありません。これは実際には当てはまりません。 @Singletonと@Startupを組み合わせると、EJB 3.1でこれが正確に実行されます。 TSが彼がEJB 3.0を使用していることを示して以来、これは残念なことに彼の選択肢ではありません。 –
@arjan:ああ、彼らは3.1でそれを修正しましたか?良い! –
あなたは正しいです、それは悪いデザインのようでした! –