Jak zaktualizować aplikację webową Tomcat bez ponownego uruchamiania całej usługi?

Jestem nowy w Tomcat. Mamy maszynę deweloperską z uruchomionymi około 5 aplikacjami. Mimo, że jest to dev, jest dość mocno używany przez naszych klientów podczas testów.

Więc powiedzmy, że musimy wprowadzić jedną małą zmianę w jednym pliku klasowym. W tej chwili musimy zamknąć Tomcat( wpływając na pozostałe cztery aplikacje), usunąć plik WAR (i katalog aplikacji internetowych), ponownie załadować nowy plik WAR i ponownie uruchomić Tomcat.

Oczywiście denerwuje to kilka osób, ponieważ niszczy wszystkie zalogowane sesje dla wszystkich aplikacje.

Czy jest na to lepszy sposób? Chodzi mi o to, czy jest sposób, aby przeładować tylko klasę , która się zmieniła zamiast wszystkiego na maszynie dev? Dzięki.
Author: cbmeeks, 2011-07-05

4 answers

Czy próbowałeś użyć aplikacji Tomcat ' S Manager? Pozwala na undeploy / wdrożyć pliki wojenne bez wyłączania Tomcat.

Jeśli nie chcesz używać aplikacji Manager, możesz również usunąć plik war z katalogu webapps, Tomcat cofnie aplikację po krótkim czasie. Następnie możesz skopiować plik wojenny z powrotem do katalogu, a Tomcat wdroży plik wojenny.

Jeśli używasz programu Tomcat w systemie Windows, może być konieczne skonfiguruj swój kontekst, aby nie blokował różnych plików.

Jeśli absolutnie nie możesz mieć żadnych przestojów, możesz przyjrzeć się równoległym wdrożeniom Tomcat 7 możesz wdrożyć wiele wersji aplikacji webowej z tą samą ścieżką kontekstową w tym samym czasie. Reguły używane do dopasowania żądań do wersji kontekstowej są następujące:

  • jeśli w żądaniu nie ma informacji o sesji, użyj najnowszej wersji.
  • Jeśli informacje o sesji są obecne w żądanie, sprawdź menedżera sesji dla każdej wersji pasującej sesji i jeśli jeden zostanie znaleziony, użyj tej wersji.
  • Jeśli informacje o sesji są obecne w żądaniu, ale nie można znaleźć pasującej sesji, użyj najnowszej wersji.
 52
Author: Steve K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-05 17:30:19

Istnieje wiele łatwych sposobów.

  1. Po prostu dotknij sieci.xml dowolnej aplikacji internetowej.
    touch /usr/share/tomcat/webapps/<WEBAPP-NAME>/WEB-INF/web.xml
    

Można również zaktualizować konkretny plik jar w WEB-INF / lib, a następnie dotknąć web.xml, zamiast budować cały plik war i wdrażać go ponownie.

  1. Usuń katalog webapps / YOUR_WEB_APP, Tomcat rozpocznie wdrażanie wojny w ciągu 5 sekund (zakładając, że plik wojny nadal istnieje w folderze webapps).

  2. Ogólnie nadpisanie pliku war z nowym wersja zostanie automatycznie przekierowana przez tomcat. Jeśli nie, możesz dotknąć sieci.xml jak wyjaśniono powyżej.

  3. Skopiuj nad już eksplodował "katalog" do folderu webapps

 21
Author: Chirag Katudia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-12 16:53:10

W katalogu conf Apache tomcat znajdziesz context.plik xml. W tym znaczniku edytuj jako Context reloadable= "true" >. powinno to rozwiązać problem i nie trzeba ponownie uruchamiać serwera

 20
Author: skal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-21 20:29:34
 4
Author: l_39217_l,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-05 13:39:44