Próbuję zmienić domyślną aplikację serwera WWW Tomcat 6 na inną aplikację niż „ROOT” (w folderze webapps). Jaki jest najlepszy sposób, aby to zrobić?
Istnieją trzy metody:
Najpierw zamknij Tomcata z jego bin
katalogu ( sh shutdown.sh
). Następnie usuń całą zawartość webapps
folderu Tomcat ( rm -fr *
). Następnie zmień nazwę pliku WAR na ROOT.war
i na koniec uruchom Tomcata z bin
katalogu ( sh startup.sh
).
Pozostaw swój plik wojenny $CATALINA_BASE/webapps
pod jego oryginalną nazwą. Wyłącz
autoDeploy i deployOnStartup w elemencie Host w server.xml
pliku. Jawnie zdefiniuj wszystkie konteksty aplikacji w programie server.xml
, określając zarówno atrybuty path, jak
i docBase . Musisz to zrobić, ponieważ wyłączyłeś wszystkie mechanizmy automatycznego wdrażania Tomcat, a Tomcat nie będzie już wdrażał twoich aplikacji, chyba że znajdzie ich kontekst w pliku server.xml
.
druga metoda: aby wprowadzić zmiany w dowolnej aplikacji, musisz zatrzymać i ponownie uruchomić Tomcat.
Umieść plik WAR poza $CATALINA_BASE/webapps
(musi znajdować się na zewnątrz, aby zapobiec podwójnemu wdrożeniu). Umieść plik kontekstu o nazwie ROOT.xml
w $CATALINA_BASE/conf/
. Pojedynczy element w tym pliku kontekstowym MUSI mieć
atrybut docBase wskazujący lokalizację pliku WAR. Elementu ścieżki nie należy ustawiać - .xml
w tym przypadku pochodzi on od nazwy pliku ROOT.xml
. Szczegółowe informacje można znaleźć w dokumentacji kontenera kontekstu .
$CATALINA_BASE/conf/[enginename]/[hostname]
katalogu (co jest dla mojej raczej podstawowej konfiguracji$CATALINA_HOME/conf/Catalina/localhost
). Zapoznaj się z dokumentacją kontenera kontekstu .sudo systemctl start tomcatx
gdziex
oznacza numer wersjiDodanie
<Context>
tagu do<Host>
tagu wserver.xml
Tomcat 6 rozwiąże problem.Jeśli używasz
path=""
pustego, możesz użyć adresu URL takiego jakhttp://localhost/first.do
.W zestawie atrybutów znaczników kontekstu
docBase="E:\struts-ITRCbook\myStrutsbook"
ireloadable="true"
, następnie zakończyć tag kontekstowe.Powinien wyglądać mniej więcej tak:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="E:\struts-ITRCbook\myStrutsbook" reloadable="true"> </Context> </Host>
źródło
W Tomcat 7 po tych zmianach mogę uzyskać dostęp
myAPP
pod adresem/
iROOT
pod adresem/ROOT
Dodaj powyżej do
<Host>
sekcji w server.xmlźródło
/ROOT
i próbuję zalogować się na stronę Menedżera przy użyciu poprawnych poświadczeń, odmawia mi się dostępu. Czy wiesz, jak to naprawić?Domyślną aplikacją ROOT jest zwykle Tomcat Manager - co może być przydatne, więc miałem ochotę ją mieć.
Więc sposób, w jaki zrobiłem ROOT mojej aplikacji i zachowałem TCmgr, był taki.
zmieniono nazwę ROOT na coś innego
następnie utworzył dowiązanie symboliczne, w którym ROOT wskazuje aplikację, którą chcę ustawić jako domyślną.
pracował dla mnie i wydawał się najłatwiejszym podejściem.
źródło
Zgodnie z dokumentacją Apache Tomcat, możesz zmienić aplikację, tworząc plik ROOT.xml. Zobacz to, aby uzyskać więcej informacji:
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
„Domyślną aplikację internetową można zdefiniować za pomocą pliku o nazwie ROOT.xml”.
źródło
Możesz to zrobić w nieco hakerski sposób:
źródło
Alternatywnym rozwiązaniem byłoby utworzenie serwletu, który wysyła przekierowanie do żądanej domyślnej aplikacji internetowej i odwzorowuje ten serwlet na wszystkie adresy URL w aplikacji internetowej ROOT.
Dodaj powyższą klasę do
CATALINA_BASE/webapps/ROOT/WEB-INF/classes/com/example/servlet
.I dodaj następujące informacje do
CATALINA_BASE/webapps/ROOT/WEB-INF/web.xml
:W razie potrzeby można łatwo zmodyfikować serwlet RedirectServlet tak, aby akceptował parametr init, aby umożliwić ustawienie domyślnej aplikacji internetowej bez konieczności modyfikowania źródła.
Nie jestem pewien, czy zrobienie tego miałoby jakiekolwiek negatywne konsekwencje, ale przetestowałem to i wydaje się, że działa.
źródło
konfiguracja context.xml nie działa dla mnie. Tomcat 6.0.29 narzeka, że docBase znajduje się w appBase: ... W przypadku Tomcat 5 to faktycznie zadziałało.
Więc jednym rozwiązaniem jest umieszczenie aplikacji w folderze ROOT.
Innym bardzo prostym rozwiązaniem jest umieszczenie pliku index.jsp w ROOT, który przekierowuje do mojej aplikacji w następujący sposób: response.sendRedirect ("/ MyApplicationXy");
Z poważaniem, Jan
źródło
Mam problem z konfiguracją Tomcata
server.xml
i dodaniem elementu Context. Po prostu nie chce używać mojej konfiguracji: http://www.oreillynet.com/onjava/blog/2006/12/configuration_antipatterns_tom.htmlJeśli jesteś w
Unix-like
systemie:mv $CATALINA_HOME/webapps/ROOT $CATALINA_HOME/webapps/___ROOT
ln -s $CATALINA_HOME/webapps/your_project $CATALINA_HOME/webapps/ROOT
Gotowe.
Pracuje dla mnie.
źródło
Najlepszy sposób na zmianę aplikacji root Tomcat. Przetestowano na Tomcat 7 i 8.
Przejdź do katalogu Tomcat Webapps:
Przykład na moim komputerze:
~/stack/apache-tomcat/webapps
Zmień nazwę, zamień lub usuń folder ROOT. Moja rada to zmiana nazwy lub utworzenie kopii zapasowej. Przykład zmiany nazwy ROOT na RENAMED_ROOT:
mv ROOT RENAMED_ROOT
Przenieś plik war z aplikacją do katalogu Tomcat webapps (jest to katalog, w którym znajdował się stary folder ROOT, na moim komputerze: ~ / stack / apache-tomcat / webapps)
źródło
Popatrzę na moje dokumenty; istnieje sposób na określenie konfiguracji, aby zmienić ścieżkę głównej aplikacji internetowej z innej niż ROOT (lub ROOT.war), ale wydaje się, że zmieniła się między Tomcat 5 i 6.
Znajdź to:
http://www.nabble.com/Re:-Tomcat-6-and-ROOT-application...-td20017401.html
Wygląda więc na to, że zmiana ścieżki głównej (w ROOT.xml) jest możliwa, ale trochę zepsuta - musisz przenieść WAR poza katalog automatycznego wdrażania. Zastanów się, jeśli zapytam, dlaczego zmiana nazwy pliku na ROOT.war nie jest wykonalnym rozwiązaniem?
źródło
Niezbyt dobre rozwiązanie, ale jednym ze sposobów jest przekierowanie z aplikacji ROOT do YourWebApp. W tym celu musisz zmodyfikować plik ROOT index.html.
LUB
Źródła: http://staraphd.blogspot.com/2009/10/change-default-root-folder-in-tomcat.html
źródło
W Tomcat 7 (na serwerze Windows) nie dodałem ani nie edytowałem niczego w żadnym pliku konfiguracyjnym. Właśnie zmieniłem nazwę folderu ROOT na coś innego i zmieniłem nazwę folderu aplikacji na ROOT i działało dobrze.
źródło