我有一个注释如下的EJB:
@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
SpringBeanAutowiringInterceptor
创建ClassPathXmlApplicationContext
,然后创建一些@Component
。其中一个@Component
是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]
”相关联。)
我在Spring中尝试了jee:jndi-lookup
,但是我无法在JNDI中使用实体管理器以使其工作。这应该以某种方式在我的persistence.xml
甚至是另一个级别完成吗?
我在JBOSS中运行所有这些作为Arquillian测试,但我的目标环境是WAS。因此,我应该避开容器特定的解决方案。这不是WAR项目,而是在EAR中收缩包装EJB JAR。
我想我正在寻找这里的一般概念或最佳实践,让我前进。 (因此我限制了问题中包含的代码量,但如果有帮助,我很乐意分享一些细节。)谢谢!
答案 0 :(得分:0)
将以下内容添加到Spring Config
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />