JPA/Hibernate と Google Guice を使用するアプリケーションがあります。Guice は a でブートストラップされ、それ自体ServletContextListener
をセットアップしEntityManagerFactory
ます。
アプリケーションは Tomcat 7 で正常に動作しますが、JBoss AS7 にデプロイすると失敗します。JBoss が my を呼び出す前に JPA を自動的にセットアップすることを決定するためServletContextListener
です。
JBoss が JPA を自動的に初期化せず、代わりにそれを行うのを待つにはどうすればServletContextListener
よいですか?
アップデート
ジェームズが以下に提供したリンクによると:
アプリケーションのデプロイ中に、JPA の使用が検出され (persistence.xml または @PersistenceContext/Unit アノテーションなど)、Hibernate の依存関係がアプリケーションのデプロイに挿入されます。
https://docs.jboss.org/author/display/AS71/JPA+Reference+Guide#JPAReferenceGuide-はじめに
この「自動検出」機能を無効にする方法を理解する必要があります。
アップデート #2
次のプロパティをpersistence.xmlに追加することで、JPAのコンテナ管理を無効にできます。
<property name="jboss.as.jpa.managed" value="false" />
このトピックによると、2012 年 2 月現在、この機能はナイトリー ビルドでのみ利用できます。