5

我有一个使用 JPA/Hibernate 和 Google Guice 的应用程序。Guice 在 a 中被引导ServletContextListener并设置了EntityManagerFactory自身。

该应用程序在 Tomcat 7 上运行良好,但是当我部署到 JBoss AS7 时它失败了,因为 JBoss 决定在调用我的ServletContextListener.

如何让 JBoss 不自动初始化 JPA 而是等待我ServletContextListener这样做?

更新

根据詹姆斯在下面提供的链接:

在应用程序部署期间,检测到 JPA 使用(例如 persistence.xml 或 @PersistenceContext/Unit 注释)并将 Hibernate 依赖项注入到应用程序部署中。

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 月,此功能仅在夜间构建中可用。

4

1 回答 1

2

JBoss AS7 是一个完整的 Java EE 服务器。这意味着 JPA 实现与它捆绑在一起。在 Tomcat 中,您必须提供自己的 JPA 实现,并且基本上像在 Java SE 中一样运行 JPA。

我建议您阅读 AS7 的JPA 参考文档。

您还可以获得 CDI,因此不需要 Guice。您可能可以使用 Guice 而不是 CDI,但老实说,我无法告诉您如何 :-)

于 2012-04-19T16:17:14.157 回答