2017-09-14 10 views
0

@ApplicationScopedキャッシングメカニズムを設定したいのは、基本的に起動時に読み取るいくつかのデータベース値を格納するだけです。 EntityManagerや他の注入された依存関係(クエリファクトリ)を常時保持しなくてもこれを実行できますか?私は初期化の間にそれらを必要とします。@ApplicationScoped - 一時的な注射を受けることは可能ですか?

答えて

1

コンテナが実際に接続を開いているかどうかはわかりません。しかし、それは言うでしょう。まず、EntityManagerをCDIで注射可能にする必要があります。あなたはそうのようにこれを行うことができます:

@ApplicationScoped 
public class EntityManagerProducer { 
    @Produces 
    @PersistenceContext(unitName = "my-pu-name") 
    private EntityManager em; 
} 

次に、あなたが使用することができ、あなたの初期化メソッド内:

public void init() { 
    EntityManager entityManager = CDI.current().select(EntityManager.class).get(); 
    // Do some stuff here 
    CDI.current().select(Entitymanager.class).destroy(entityManager); 
} 

.destroyはその依存関係は、もはや有効ではないであることを確認する必要があります。

関連する問題