Wiem, że mogę zmienić nazwę mojej aplikacji internetowej (lub jej pliku WAR) na ROOT, ale to okropny sposób, aby to zrobić, IMHO. Teraz sprawdziłem dokument Tomcat i mówi
NIE zaleca się umieszczania elementów bezpośrednio w pliku server.xml
Więc spróbowałem zrobić to inną metodą, którą zasugerował.
Poszczególne elementy kontekstu można jawnie zdefiniować: w indywidualnym pliku pod adresem /META-INF/context.xml wewnątrz plików aplikacji.
Więc utworzyłem /META-INF/context.xml
z następującym kodem,
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/"/>
Ale po wdrożeniu i ponownym uruchomieniu serwera nadal nie udało się załadować kontekstu w „/”, nadal ładował go za pomocą "/<WEB_APP_NAME>"
Wszelkie wskazówki są pomocne.
tomcat
tomcat7
root
context.xml
Chantz
źródło
źródło
Odpowiedzi:
Oto co możesz zrobić;
Dodaj plik o nazwie
ROOT.xml
w<catalina_home>/conf/Catalina/localhost/
Ten plik ROOT.xml zastąpi domyślne ustawienia kontekstu głównego instalacji tomcat dla tego silnika i hosta (Catalina i localhost).
Wprowadź następujące dane do pliku ROOT.xml;
Oto
<yourApp>
nazwa Twojej aplikacji… :)I gotowe, Twoja aplikacja jest teraz domyślną aplikacją i pojawi się na
http://localhost:8080
Jest jednak jeden efekt uboczny; Twoja aplikacja zostanie załadowana dwukrotnie. Raz na
localhost:8080
zawszelocalhost:8080/yourApp
. Aby to naprawić, możesz umieścić aplikację<catalina_home>/webapps
NA ZEWNĄTRZ i użyć względnej lub bezwzględnej ścieżki w znaczniku docBase ROOT.xml. Coś takiego;A potem powinno być wszystko OK!
źródło
Oto jedyne rozwiązania, które działały dla mnie. Dodaj to do węzła hosta w pliku conf / server.xml
źródło
server.xml
lubcontext.xml
? widzę tag xml<Context>
w moimcontext.xml
W Tomcat 9.0 muszę tylko zmienić następujące elementy w
server.xml
do
źródło
Ten mały kod zadziałał dla mnie, używając wirtualnych hostów
źródło
server.xml
środku? Według np. Ali.Mojtehedy powyżej jest to problematyczne. Inne odpowiedzi wskazują, że/path/to
musi znajdować się poza normalną ścieżką do aplikacji internetowych.Najszybszym i być może najlepszym rozwiązaniem jest umieszczenie poniżej treści w formacie
<TOMCAT_INSTALL_DIR>/conf/Catalina/localhost/ROOT.xml
Twoja aplikacja internetowa będzie dostępna pod adresem
http://<host>:<port>/
źródło
Foobar
w/opt/tomcat/webapps/Foobar
. Próbowałem ustawić docBase naFoobar
a także/opt/tomcat/webapps/Foobar
, ale kiedy przechodzę do `http: // <host>: <port> / nadal widzę stronę główną Tomcat zamiast mojej aplikacji Foobar. Nawet zrestartowałem Tomcat. Co ja robię źle?Stawiałem czoła temu problemowi przez miesiąc, Umieszczenie tagu kontekstowego wewnątrz server.xml nie jest bezpieczne, wpływa na elementy kontekstu wdrażane dla wszystkich innych hostów, w przypadku dużych aplikacji przyjmuje błędy połączenia również niezbyt dobrą izolację, na przykład możesz uzyskać dostęp do innych witryn według nazwy folderu domena2 .com / domain1Folder !! również dwukrotnie ładowane połączenia sesji bazy danych! w drugą stronę należy umieścić plik ROOT.xml, który ma tag kontekstowy z pełną ścieżką taką:
w conf / catalina / webappsfoldername i wdróż plik wojenny jako ROOT.war wewnątrz webappsfoldername, a także określ host taki
W tym podejściu również dla sesji użytkowników tego samego typu nie ma dobrej izolacji! możesz wewnątrz app1, jeśli app1 jest taki sam jak app2, możesz po zalogowaniu przez sesję po stronie serwera automatycznie zalogować się do app2?! Musisz więc utrzymywać sesję użytkowników w pamięci podręcznej po stronie klienta, a nie z jsessionid! możemy zmienić nazwę silnika z localhost, aby go rozwiązać. ale powiedzmy, że zabawa z kocurem wymaga więcej czasu niż zabawa z innymi kotami!
źródło
Nie zaleca się aktualizowania konfiguracji serwera, takiej jak server.xml lub ROOT.xml.
Możesz umieścić plik konfiguracyjny context.xml w katalogu META-INF aplikacji internetowej, z dołączonym ustawieniem ścieżki kontekstu. To spowoduje zastąpienie domyślnych ustawień serwera?
to znaczy:
źródło
<Context docBase="yourAppName" path="" reloadable="true">
źródło
Tomcat 8: Po wielu poszukiwaniach jest to tylko działający kod: w server.xml
Zrestartuj Tomcat, upewnij się, że po uzyskaniu dostępu do 127.0.0.1:8080 wyświetli zawartość w 127.0.0.1:8080/apple
Mój projekt to aplikacja webowa java stworzona przez netbeans, ustawiam ścieżkę kontekstu w konfiguracji projektu, nic innego, nawet umieściłem apple.war w folderze webapps.
źródło
Dla mnie obie odpowiedzi zadziałały.
Uwaga: kiedy deklarujesz docBase w kontekście, zignoruj appBase na hoście.
ROOT.war
i umieścić ją pod aplikacjami internetowymi. Więc teraz niedopasowane żądania adresów URL z innych wojen (ścieżek kontekstu) trafią do tej wojny. Jest to lepszy sposób obsługi ścieżki kontekstu ROOT („/ **”).Drugą opcją jest (podwójne) ładowanie wojen z folderu Webapps. Potrzebuje tylko nieskompresowanego folderu wojennego, który jest bólem głowy.
źródło
W Tomcat 8.X, w katalogu domowym tomcat / conf / folder w server.xml możesz dodać
<Context>
tag pod<Host>
tagiem, jak pokazano poniżej. Ale musisz zrestartować serwer, aby odniosło skutekLUB jeśli używasz Tomcat 7.X, możesz dodać plik context.xml do folderu WEB-INF w swoim projekcie. Zawartość pliku, którego użyłem, jest taka, jak pokazano. i działało dobrze dla mnie. w tym przypadku nie musisz restartować serwera.
źródło
localhost:8080/<Your App Directory Name>/
ilocalhost:8080/<your app path you wish>/
oba te adresy URL działają w tym samym czasie. Znalazłem te dwa wyodrębnione foldery w$CATALINA_HOME/webapps/
.Najprostsze i elastyczne rozwiązanie znajduje się poniżej: Inside $ {Tomcat_home} /config/server.xml
Zmień autoDeploy = "false" deployOnStartup = "false" w elemencie Host , jak poniżej. Jest to konieczne.
Dodaj poniższy wiersz pod elementem Host .
Dzięki powyższemu podejściu możemy dodać dowolną liczbę aplikacji do aplikacji internetowych z różnymi nazwami ścieżek kontekstowych.
źródło
Poniższa sztuczka zadziałała dla mnie.
1) Skomentuj / usuń poniższą konfigurację z pliku server.xml (w folderze conf) tomcat.
2) Usuń istniejący folder ROOT (jeśli istnieje) znajdujący się w folderze webapps tomcat. I zmień nazwę pliku wojny (np.: Test.war) na ROOT.war.
Pamiętaj, że przy zmianie nazwy pliku wojennego na ROOT.war "ROOT" powinien być pisany wielkimi literami.
Ograniczenie: w jednej instancji tomcat można wdrożyć tylko jedną aplikację.
źródło