web-dev-qa-db-ja.com

Tomcat Webアプリのアンデプロイ時にファイルのロックを防ぐ方法は?

Tomcat 7でマネージャーアプリを使用していますが、アプリケーションを完全にアンデプロイできません。

FAIL - Unable to delete [F:\Apache-Tomcat-7.0.33\webapps\balaji]. The continued presence of this file may cause problems.

メモリリークと呼ばれる現象のためにどこかで読みましたが、修正すれば問題は解決します。

Tomcat 7のこのメモリリークとは何ですか?それをどのように修正できますか? Windows 7 OSを使用しています。修正できる場合、アンデプロイおよび再デプロイのプロセスはスムーズに実行されますか?

65
bali208

これはWindows環境では非常に一般的ですが、 antiResourceLocking コンテキストプロパティによる解決策があります。

/ Tomcat/confフォルダーからcontext.xmlを開き、これに一致するようにコンテキストを変更します。

<Context antiResourceLocking="true">

編集:@JanMコメントに続くプロパティを更新しました。以前は、「antiJARLocking」も含まれていました

119
mvlupan

これはTomcatの一般的な問題の1つです。 Tomcatサーバーは、起動時にリソースを保持してデプロイします。アンデプロイ中、一部のリソースはまだTomcatで使用されています。リソースはまだリリースされていませんが、同時にTomcatの別のスレッドが同じリソースをクリーンアップしようとします。したがって、これらのリソースの削除は失敗します。 1つの最良の方法は、webappsのアプリケーションのルートディレクトリを手動でクリーンアップすることです。

13
Amith Koujalgi

Apache Tomcat/8.0.5でも同じ問題に遭遇しました。マネージャーアプリを使用して次の手順を実行しましたが、うまくいきました。

  • すべてのタブを含むブラウザを閉じます(キャッシュを削除するため)。
  • 「マネージャーアプリ」を再度開き、最初にアプリケーションが停止していることを確認します(スタートボタンを有効にする必要があります)。
  • 次に、アンデプロイをクリックします。

アンデプロイを直接クリックすると、まずjarがロックされ、アプリケーションが停止してアンデプロイが試行されますが、FAIL - Unable to deleteメッセージで失敗します。

ステータスが本当に混乱している場合は、ブラウザーを閉じ、Tomcatを再起動し、「マネージャーアプリ」を開き、停止をクリックしてからアンデプロイします。

1
Sumant