次のように注釈が付けられた 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-lookupSpringで試しましたが、エンティティマネージャーをJNDIで利用できるようにする方法がわかりません。それはどうにかして私のレベルで、persistence.xmlまたは別のレベルで行う必要がありますか?
Arquillian テストとして JBOSS でこれらすべてを実行していますが、ターゲット環境は WAS です。したがって、コンテナ固有のソリューションからも遠ざかる必要があります。これは WAR プロジェクトではなく、EJB JAR を EAR にシュリンクラップします。
ここで私を前進させるために、一般的な概念またはベストプラクティスを探していると思います。(したがって、質問に含まれるコードの量を制限しましたが、それが役立つ場合は、いくつかの詳細を喜んで共有します。)ありがとう!