2013-02-14 15 views
60

Używam aplikacji zarządzającej w tomcat 7, i nie mogę całkowicie cofnąć wdrożenia aplikacji.Nie można całkowicie cofnąć aplikacji internetowej w Tomcat 7

Mówi FAIL - Unable to delete [F:\apache-tomcat-7.0.33\webapps\balaji]. The continued presence of this file may cause problems.

Czytałem gdzieś jego ponieważ od jakiegoś zjawisko zwane wycieku pamięci, a jeśli to naprawić problem zostanie rozwiązany.

Czy ktoś może mi powiedzieć, co to jest wyciek pamięci w tomcat 7, i jak możemy to naprawić? Używam systemu operacyjnego Windows 7. Jeśli mogę to naprawić, mój proces un-wdrażania i ponownego wdrożenia przebiega sprawnie?

Odpowiedz

110

To jest bardzo powszechne w środowisku Windows, ale nie jest to rozwiązanie:

Otwarte context.xml z tomcat/conf/folderu i modyfikować kontekst pasujące do tego:

<Context antiResourceLocking="true"> 

Edycja: Zaktualizowane właściwości po komentarzu @ JanM. Poprzednio zawierał on również "antiJARLocking"

+0

Dzięki za rozwiązanie, Jego działa dobrze ..! – bali208

+0

Czy występuje tylko w systemie Windows? Tomcat jest oparty na Javie i widzę podobne problemy w Ubuntu z Tomcat. – icedwater

+1

Powiedziałem tylko, że jest to wspólne dla Windows, przynajmniej tak było w przypadku mnie i osób, które znam. Dla Ubuntu może to wyglądać podobnie. – mvlupan

13

Jest to jeden z typowych problemów z tomcat. Serwer Tomcat przechwytuje zasoby przy uruchomieniu i wdraża je. Podczas wycofywania niektóre zasoby nadal będą używane przez tomcat. Nie uwolniłoby jeszcze zasobu, ale w tym samym czasie inny wątek w tomcat spróbowałby oczyścić te same zasoby. Dlatego też usunięcie tych zasobów zakończy się niepowodzeniem. Jednym z najlepszych sposobów jest ręczne wyczyszczenie katalogu głównego aplikacji w aplikacjach internetowych.

+1

To nie zawsze działa. Jeśli plik JAR jest zablokowany, nie można usunąć folderów nadrzędnych. Zatrzymanie aplikacji nie zawsze uwalnia ten słoik. Wymuszenie ponownego uruchomienia Tomcat. – cbmeeks

0

Znalazłem ten sam problem w Apache Tomcat/8.0.5. Zrobiłem następujące kroki przy użyciu aplikacji menedżera i zadziałało to dla mnie.

  • Zamknij przeglądarkę ze wszystkimi kartami (aby usunąć pamięć podręczną).
  • Ponownie otwórz aplikację "Menedżer" i najpierw upewnij się, że aplikacja jest zatrzymana (przycisk uruchamiania powinien być włączony).
  • Teraz kliknij undeploy.

myślę, kiedy bezpośrednio po kliknięciu na undeploy najpierw zablokuje słoiki, zatrzymuje aplikację i spróbuj undeploy ale nie z FAIL - Unable to delete wiadomości.

Jeśli naprawdę nie masz pojęcia o statusie, zamknij przeglądarkę, zrestartuj tomcat, otwórz "aplikację menedżera", kliknij stop, a następnie cofnij wdrożenie.

0

antiResourceLocking:
Jeśli true, Tomcat uniemożliwi blokowanie plików. Znacząco wpłynie to na czas uruchamiania aplikacji, ale pozwoli na pełne wdrożenie i wdrożenie aplikacji webapp na platformach lub w konfiguracjach, w których może wystąpić blokowanie plików. Jeśli nie zostanie podana, domyślną wartością jest false.

Należy pamiętać, że ustawienie to true ma pewne skutki uboczne, w tym wyłączenie z JSP przeładunku w uruchomiony serwer: patrz Bugzilla 37668.

Należy pamiętać, że ustawienie tej flagi na true w aplikacjach, które są poza appBase dla hosta (domyślnie katalog webapps) spowoduje, że aplikacja zostanie usunięta przy wyłączaniu Tomcat.Prawdopodobnie nie chcesz tego robić, więc zastanów się dwa razy przed ustawieniem antiResourceLocking = true na apce internetowej, która znajduje się poza appBase dla swojego hosta.

Powiązane problemy