Zajmuję się tworzeniem internetowej aplikacji Java w pracy i (oczywiście) muszę ją uruchamiać lokalnie podczas programowania. Opracowałem dokumentację Tomcat i mam odpowiedni plik context.xml, /etc/tomcat6/Catalina/localhost/
ale co jakiś czas Tomcat decyduje się go usunąć! Co oznacza, że muszę go odłożyć i ponownie uruchomić Tomcat.
Dlaczego to robi? Przeszukałem na ten temat dokumenty Tomcat i nie jestem mądrzejszy.
(Och tak: nie jest tak naprawdę wywoływane, context.xml
ale owners.xml
ponieważ jest to przedrostek ścieżki HTTP dla tej aplikacji).
Aktualizacja
Widziałem teraz, jak Tomcat usuwa plik, gdy Tomcat jest uruchomiony . Myślę, że muszę zgłosić błąd ...
Odpowiedzi:
Szybkie podsumowanie : istnieje kilka warunków (takich jak zmiana pliku wojny, usunięcie aplikacji internetowej lub zastąpienie jej nową zawartością), w których tomcat usunie kontekst, w tym usunięcie pliku kontekstu.
Szczegóły : To, czy tomcat wykonuje lub nie wykonuje autoDeployment (oznacza sprawdzanie zmian w deskryptorze .xml, a także sprawdzanie zmian w katalogu aplikacji WWW) zależy od:
server.xml zlokalizowany w sekcji $ CATALINA_HOME / conf / server.xml:
<Nazwa hosta = "localhost" appBase = "webapps" unpackWARs = "true" autoDeploy = "true" xmlValidation = "false" xmlNamespaceAware = "false">
Możesz także ustawić tę właściwość w pliku kontekstowym, przeciążając wartość
Cytując dokument w przypadkach, gdy autoDeploy = true może spowodować usunięcie pliku kontekstu:
Wyczerpujące szczegóły : http://tomcat.apache.org/tomcat-6.0-doc/config/host.html#Automatic%20Application%20Deployment
źródło
Jeśli nie chcesz funkcji autoDeploy , na przykład w środowiskach produkcyjnych, możesz rozważyć następujące atrybuty w pliku kontekstowym conf / Catalina / localhost:
autoDeploy = „fałsz” może nie działać sam, ponieważ aplikacja context.xml (w META-INF) może zastąpić ustawienia server.xml funkcji autoDeploy.
Warto zapoznać się z dokumentacją atrybutów dokumentacji atrybutów XML (§ Standardowe wdrożenie).
Wyczerpująca sprawa użytkownik autoDeploy, a gdy kontekst jest usuwany: czyli aplikacja nieaktywnej, użytkownik jest udokumentowany przypadek można znaleźć tutaj .
źródło
Nie mogę odpowiedzieć na pytanie dlaczego .
Jednak ten link mówi, że możesz to zatrzymać, ustawiając
autoDeploy="false"
wserver.xml
źródło
Szczerze mówiąc, nie wiem, jakie są tego powody, ale spróbuj dodać następujący atrybut XML do elementu kontekstu
Twój kontekst może wyglądać mniej więcej tak:
To powinno powstrzymać Tomcat przed usunięciem pliku
źródło
Zdaję sobie sprawę, że to stary wątek, ale pomyślałem, że podzielę się tym, co znalazłem, aby rozwiązać ten problem ...
Miałem dokładnie ten sam problem z plikiem kontekstowym.xml mojej komputerowej wersji tomcata, który był blokowany za każdym razem, gdy wdrażałem nową kopię pliku war dla mojej aplikacji.
Problem wynikał z tego, że wprowadzałem zmiany do tego pliku bezpośrednio w systemie plików. Rozwiązaniem problemu była edycja pliku context.xml za pomocą mojego edytora Eclipse. Wewnątrz mojego Eclipse znajduje się projekt „serwerów”, który po rozwinięciu wyświetla garść plików, takich jak context.xml i server.xml. Wygląda na to, że jeśli zmodyfikujesz pliki stąd zamiast wychodzić do systemu plików, zmiany zostaną zachowane.
Znalazłem to rozwiązanie w następującym wątku: https://www.liferay.com/community/forums/-/message_boards/message/16511799
Mam nadzieję, że to pomaga komuś innemu!
-StephenS
źródło
Ogólny problem opisany w tytule jest objęty ponownym wdrożeniem z wojny bez usuwania kontekstu, który jest nadal otwartym problemem.
Zauważono rozróżnienie między ponownym wdrożeniem, które nie usuwa kontekstu, a wdrożeniem po odinstalowaniu, w przypadku którego odinstalowanie usuwa kontekst. Dokumentacja była nieaktualna, a GUI menedżera nadal nie obsługuje ponownego wdrażania.
źródło
Czasami konieczne jest posiadanie różnych wartości dla aplikacji na serwerze, na przykład ścieżka do przechowywania przesłanych plików. W środowisku deweloperskim mabe mamy coś takiego:
Ale na serwerze ścieżka jest inna:
Mam również ten sam problem, tomcat usuwa plik context.xml (meapp.xml) z conf / Catalina / localhost
Aby rozwiązać, używam kontekst.xml.default, w tej samej ścieżce tworzę plik o nazwie context.xml.default i wewnątrz konfiguracji put, którą chcę trzymać:
Tak więc, kiedy ponownie wdrażam aplikację, potwierdzone parametry wciąż tam są.
źródło