5

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 月現在、この機能はナイトリー ビルドでのみ利用できます。

4

1 に答える 1

2

JBoss AS7 は完全な Java EE サーバーです。つまり、JPA 実装がバンドルされています。Tomcat では、独自の JPA 実装を提供する必要があり、基本的に Java SE の場合と同様に JPA を実行しています。

AS7のJPA リファレンスドキュメントを読むことをお勧めします。

CDI も取得できるので、Guice は必要ありません。おそらく CDI の代わりに Guice を使用することもできますが、正直なところ、その方法はわかりません :-)

于 2012-04-19T16:17:14.157 に答える