次のように注釈が付けられた EJB があります。
@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
はSpringBeanAutowiringInterceptor
を作成しClassPathXmlApplicationContext
、次にいくつか@Component
の を作成します。これら@Component
の s の 1 つは DAO であるため、EntityManager
注入されるのが好きです。できれば、これは EJB のコンテナー管理である必要がありますEntityManager
(私の現在の洞察によると)。
EJB に次を追加すると、問題なく動作します。
@PersistenceContext
EntityManager entityManager;
ただし、DAO(独自のコンテキストであるSpringにある)で後者を実行すると、機能しません。ユニット名を具体的に呼ぶかどうかに関係なく(unitName="test"
、 " No bean named 'test' is defined
" 対 " No unique bean of type [javax.persistence.EntityManagerFactory]
")。
私はjee:jndi-lookup
Springで試しましたが、エンティティマネージャーをJNDIで利用できるようにする方法がわかりません。それはどうにかして私のレベルで、persistence.xml
または別のレベルで行う必要がありますか?
Arquillian テストとして JBOSS でこれらすべてを実行していますが、ターゲット環境は WAS です。したがって、コンテナ固有のソリューションからも遠ざかる必要があります。これは WAR プロジェクトではなく、EJB JAR を EAR にシュリンクラップします。
ここで私を前進させるために、一般的な概念またはベストプラクティスを探していると思います。(したがって、質問に含まれるコードの量を制限しましたが、それが役立つ場合は、いくつかの詳細を喜んで共有します。)ありがとう!