2013-04-24 36 views
1

我有如下注的一個EJB:的EntityManager中的SpringBeanAutowiringInterceptor創建上下文

@Stateless 
@Interceptors(SpringBeanAutowiringInterceptor.class) 

SpringBeanAutowiringInterceptor創建ClassPathXmlApplicationContext這反過來又創造了一些@Component秒。其中一個@Component s是DAO,因此喜歡注入EntityManager。最好這應該是EJB的容器管理的EntityManager(根據我目前的見解)。

如果我添加到EJB以下,將工作得很好:

@PersistenceContext 
EntityManager entityManager; 

如果然而,我做我的DAO(這是在春天這是它自己的上下文),後者不起作用。不管我是否具體說出單位名稱(unitName="test",「No bean named 'test' is defined」與「No unique bean of type [javax.persistence.EntityManagerFactory]」)。

我在Spring中嘗試過jee:jndi-lookup,但是我在如何使JNDI中的實體管理器可用以使其工作方面遇到困難。這應該在我的persistence.xml或甚至在另一個層面做到?

作爲Arquillian測試,我在JBOSS中運行所有這些,但我的目標環境是WAS。因此,我也應該避開容器特定的解決方案。這不是一個WAR項目,而是將EJB JAR包裝在一個EAR中。

我想我正在尋找這裏的一般概念或最佳實踐,以推動我前進。 (因此,我限制了包含在問題中的代碼量,儘管如果有幫助,我很樂意分享一些細節。)謝謝!

+0

看看這個:http://stackoverflow.com/a/4717196/1850609 – acdcjunior 2013-04-26 02:23:23

+0

大問題。 – Ceki 2014-02-05 14:38:00

回答

0

以下內容添加到您的Spring配置

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />