1

次のように注釈が付けられた 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 にシュリンクラップします。

ここで私を前進させるために、一般的な概念またはベストプラクティスを探していると思います。(したがって、質問に含まれるコードの量を制限しましたが、それが役立つ場合は、いくつかの詳細を喜んで共有します。)ありがとう!

4

1 に答える 1

0

以下をSpring Configに追加します

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
于 2013-04-26T02:19:01.287 に答える