3

Tomcat でホット デプロイメントを行いたいのですが、失敗します。デプロイにはmaven tomcatプラグインを使用します。「mvn tomcat:redeploy」を呼び出すと、war が tomcat webapps フォルダーに正常にアップロードされます。しかし、元の webapplication フォルダーが正常に削除されていないため、正常に解凍されません。WEB-INF/lib の下にはまだ Oracle jdbc jar が存在します。また、手動で削除しようとすると、イベントを削除できません。1 つのプロセスがそれを使用していることがわかります。jdbc接続が解放されていないと思います。

この問題を解決するにはどうすればよいですか? ありがとう

ジェフ・チャン

4

2 に答える 2

5

Tomcat の context.xml で antiJarLocking および antiResourceLocking プロパティを変更すると、古い戦争が正常に削除され、アプリを再デプロイできるようになります。

<Context antiJARLocking="true" antiResourceLocking="true">    
于 2012-07-13T13:30:27.253 に答える
1

Web アプリケーションがアンデプロイされないのは、Web アプリケーション内のいくつかのインスタンス/クラスを保持している Web アプリケーション クラスローダーの外部の参照が原因で、Web アプリケーションが完全にガベージ コレクションされていないことが原因である可能性があります。これにより、webapp 内のこれらの jar がロックされ、webapp ファイルが削除されなくなります。

これはあなた自身のウェブアプリですか?その場合は、メモリ プロファイラーを使用して tomcat でプロファイルを作成してみてください。展開、使用、および展開解除のサイクルを実行し、Web アプリケーションのクラス/インスタンスを保持している参照を確認してください。

これは jdbc ドライバーなので、データ ソースを確認することから始めます。たとえば、Spring を使用してデータ ソースを構成している場合は、データ ソースが閉じていることを確認します。例えば

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

これdestroy-method="close"により、Web アプリケーションの終了時にデータソースが適切にシャットダウンされます。

于 2011-04-07T08:45:03.507 に答える