私は同じ展開戦争の2つのWebアプリケーション(fooとbar)を持つTomcatサーバーを持っています。デプロイメントは、標準のSpring/Hibernate設定を使用します。私はこれらの2つのWebアプリケーションが起動し、互いに独立して動作することを前提としていましたが、そうではありません - webapp fooは通常どおりロードされますが、webapp barにはいくつかの奇妙な動作があります。 foo。たとえば、バーが起動すると(2番目のwebappが開始されます)、c3p0はすでに登録されていると苦情を言います。おそらくwebapp fooにあります。もう一度、2つのWebアプリケーションを完全に独立させようとしています.2つのc3p0/hibernateSessionFactory Beanが互いに知り合う方法がないはずです。複数のSpringルートWebApplicationContexts
私は、いくつかの研究を行う中で、両方のWebアプリケーションで同じSpringルートWebApplicationContextが使用されていると考えられています。その場合、どうすれば各Webアプリケーションを(同じTomcatサーバー上で)互いに完全に独立させることができますか?この問題の原因となるものは他にありますか? web.xmlファイルから
関連抜粋:
<web-app>
<context-param>
<param-name>org.hibernate.tags.sessionFactory</param-name>
<param-value>hibernate/SessionFactory</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/context/*Context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>fooServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>
「既に登録されていると文句を言う」とはどういう意味ですか?例外?その場合は、例外を表示してください。 – skaffman
「c3p0の行に沿った何かがすでに登録されているという警告がログに記録されています - コンテキストが正しくアンロードされずにメモリリークが発生する可能性があります」 少し正確なログメッセージが表示されます – Keith
正確な警告は次のとおりです。 com.mchange.v2.c3p0.management.ActiveManagementCoordinator:56 - C3P0Registry mbeanはすでに登録されています。これはおそらく、c3p0を使用するアプリケーションがアンデプロイされたことを意味しますが、アンデプロイメント前にすべてのPooledDataSourcesが閉じられているわけではありません。これにより、時間の経過とともにリソースリークが発生する可能性があります。すべてのPooledDataSourceを閉じるよう注意してください。 – Keith