我有一个使用 JPA/Hibernate 和 Google Guice 的应用程序。 Guice 是在一个ServletContextListener
它设置了EntityManagerFactory
itself.
该应用程序在 Tomcat 7 上运行良好,但是当我部署到 JBoss AS7 时,它失败了,因为 JBoss 决定在调用我的应用程序之前自动设置 JPAServletContextListener
.
我怎样才能让 JBoss 不自动初始化 JPA 而是等待我的ServletContextListener
去做吧?
Update
根据詹姆斯提供的链接如下:
在应用程序部署期间,检测 JPA 使用(例如 persistence.xml 或 @PersistenceContext/Unit 注释)并将 Hibernate 依赖项注入应用程序部署中。
https://docs.jboss.org/author/display/AS71/JPA+Reference+Guide#JPAReferenceGuide-Introduction https://docs.jboss.org/author/display/AS71/JPA+Reference+Guide#JPAReferenceGuide-Introduction
我需要弄清楚如何禁用这个“自动检测”功能。
更新#2
可以通过将以下属性添加到 persistence.xml 来禁用 JPA 的容器管理:
<property name="jboss.as.jpa.managed" value="false" />
根据,截至 2012 年 2 月,此功能仅在夜间版本中可用。
JBoss AS7 是一个完整的 Java EE 服务器。这意味着 JPA 实现是与其捆绑在一起的。在 Tomcat 中,您必须提供自己的 JPA 实现,并且本质上就像在 Java SE 中一样运行 JPA。
我建议您阅读JPA参考 https://docs.jboss.org/author/display/AS71/JPA+Reference+GuideAS7 的文档。
您还可以获得 CDI,因此不需要 Guice。您可能可以使用 Guice 而不是 CDI,但老实说我无法告诉您如何做:-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)