2016-03-21 39 views
1

私は、起動時にすべてのメッセージを2回取得し、Hibernateからの警告をEntity manager factory name is already registeredと言う警告メッセージを表示します。私はSpring、Hibernate、CXFを使用しています。私は私のセットアップがドキュメントに沿っているべきだと感じていますが、それは私が紛失しているものでなければなりません。 Spring MVCを指している類似のケースがたくさんあることがわかりましたが、それは私にとっては問題ではないと思います。私が持っている私のweb.xmlのエンティティマネージャーの工場名は既に登録されています

<listener> 
    <description>desc</description> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
<listener> 
    <listener-class> 
     org.springframework.web.context.request.RequestContextListener 
    </listener-class> 
</listener> 

<servlet> 
    <servlet-name>cxf</servlet-name> 
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

私はWEB-INFに次き:

  • applicationContext.xmlをのjava-config設定のための@Configuration クラスへのコンポーネントのスキャンで@Componentのコンポーネントスキャン。
  • cxf-servlet.xmlコンポーネントスキャンもあります。

これは私が逃したものですか?


更新1: は、私はCXF-servlet.xmlからコンポーネント・スキャンを削除する場合、問題が消えるように見えますが、@Injectと私の@Configurableクラスを処理することができません。今私は、CXFとSpringがSpringのコンテキストをどのように起動するのかについて、より混乱しています。

更新2: これは、cxf-servletとapplicationContextの両方でコンポーネントスキャンを実行することに関連するものです。すべて動作しますが、起動時に2回読み込まれます。

答えて

1

@Componentで注釈が付けられたHibernate pojoクラス/パッケージをフィルタして、エンティティマネージャーBeanを作成するものも除外してください。

以下の宣言の場合、@Componentで注釈が付けられたクラスがデフォルトでスキャンされます。

<context:component-scan base-package="com.abc.xyz" /> 
+0

ここで、フィルタリングする必要がありますか?私は、エンティティマネージャ( 'LocalContainerEntityManagerFactoryBean')を作成するクラス(' @ Configuration')を持っています。何とかこれをフィルタリングする必要がありますか? – Vegard

+0

私が正しい軌道に乗っている間に – Vegard

関連する問題