特定のファサード/実装デザインパターンを尊重しようとするEJB3モジュールを作成しています。私のファサードは完全にEJBフリーである必要があります。
このモジュールには、エンティティBeanとこのエンティティのマネージャであるセッションBeanの2つのクラスがあります。マネージャには、EntityManager属性が含まれています。
マネージャーBeanをインスタンス化するファクトリもありますが、このファクトリはマネージャーの実装を認識していません(したがって、EJBについては認識していません)。ファクトリは、プロパティファイルを使用してのみマネージャのクラスの名前を取得できます。次に、ファクトリはマネージャをインスタンス化します。
Class lClass = Class.forName (lClassName);
corporateActionManager = (ICorporateActionManager) lClass.newInstance();
私の質問は、マネージャーの実装でコンストラクターを宣言してから、そのコンストラクター内でEntityManagerを初期化できるかどうかです。
通常、EntityManagerの上にある@PersistenceContextアノテーションを使用します。
@PersistenceContext(unitName = "my_persistence_unit")
private EntityManager em;
しかし、クラスが直接インスタンス化されている場合、これは明らかに機能しません。
私はこのようなことを試みました:
public CorporateActionManagerImpl() {
Context jndi;
try {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("my_persistence_unit")
em = emf.createEntityManager();
} catch (NamingException e1) {
e1.printStackTrace();
}
}
しかし、その後、NoInitialContextExceptionが発生します。明らかに、JNDIコンテキストが正しく初期化されていません。
誰かがここで私を助けてくれますか?
ありがとう