我有一个注释如下的 EJB:
@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
SpringBeanAutowiringInterceptor
创造了一个,而ClassPathXmlApplicationContext
后者又创造了一些@Component
s。其中一个@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]
")。
我jee:jndi-lookup
在 Spring 中尝试过,但我不知道如何使实体管理器在 JNDI 中可用以使其正常工作。是否应该以某种方式在我的persistence.xml
或什至在另一个层面上完成?
我在 JBOSS 中运行所有这些作为 Arquillian 测试,但我的目标环境是 WAS。因此,我也应该避免使用特定于容器的解决方案。这不是一个 WAR 项目,而是将 EJB JAR 压缩到 EAR 中。
我想我在这里寻找一般概念或最佳实践,以推动我前进。(因此我限制了问题中包含的代码数量,但如果有帮助,我很乐意分享一些细节。)谢谢!