Ich weiß, dass ich meine Webanwendung (oder die WAR-Datei) in ROOT umbenennen kann, aber dies ist meiner Meinung nach ein schrecklicher Weg, dies zu tun. Jetzt habe ich das Tomcat-Dokument ausgecheckt und es steht
Es wird NICHT empfohlen, Elemente direkt in der Datei server.xml zu platzieren
Also habe ich versucht, es mit einer anderen Methode zu machen, die es vorgeschlagen hat.
Einzelne Kontextelemente können explizit definiert werden: In einer einzelnen Datei unter /META-INF/context.xml innerhalb der Anwendungsdateien.
Also habe ich einen /META-INF/context.xml
mit folgendem Code erstellt:
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/"/>
Nach der Bereitstellung beim Neustart des Servers konnte der Kontext jedoch immer noch nicht mit "/" geladen werden. Er wurde weiterhin mit dem geladen "/<WEB_APP_NAME>"
Alle Hinweise hilfreich.
quelle
Antworten:
Was Sie tun können, ist das Folgende;
Fügen Sie eine Datei mit dem Namen
ROOT.xml
in<catalina_home>/conf/Catalina/localhost/
Diese ROOT.xml überschreibt die Standardeinstellungen für den Stammkontext der Tomcat-Installation für diese Engine und diesen Host (Catalina und localhost).
Geben Sie Folgendes in die Datei ROOT.xml ein.
Hier
<yourApp>
ist der Name Ihrer App. :)Und los geht's, Ihre Anwendung ist jetzt die Standardanwendung und wird am angezeigt
http://localhost:8080
Es gibt jedoch eine Nebenwirkung; Ihre Anwendung wird zweimal geladen. Einmal für
localhost:8080
und einmal fürlocalhost:8080/yourApp
. Um dies zu beheben, können Sie Ihre Anwendung AUSSEN platzieren<catalina_home>/webapps
und einen relativen oder absoluten Pfad im docBase-Tag von ROOT.xml verwenden. Etwas wie das;Und dann sollte alles in Ordnung sein!
quelle
Hier folgen die einzigen Lösungen, die für mich funktioniert haben. Fügen Sie dies dem Host-Knoten in der Datei conf / server.xml hinzu
quelle
server.xml
oder seincontext.xml
? Ich sehe ein XML-Tag<Context>
in meinemcontext.xml
In Tomcat 9.0 muss ich im Folgenden nur Folgendes ändern
server.xml
zu
quelle
Dieser kleine Code funktionierte für mich mit virtuellen Hosts
quelle
server.xml
? Laut zB Ali.Mojtehedy oben ist das problematisch. Andere Antworten geben außerdem an, dass/path/to
sie außerhalb des normalen Webapps-Pfads liegen müssen.Am schnellsten und möglicherweise am besten ist es, den folgenden Inhalt zu haben
<TOMCAT_INSTALL_DIR>/conf/Catalina/localhost/ROOT.xml
Und Ihre Webapp wird unter verfügbar sein
http://<host>:<port>/
quelle
Foobar
in/opt/tomcat/webapps/Foobar
. Ich habe versucht, docBase aufFoobar
und auch zu setzen/opt/tomcat/webapps/Foobar
, aber wenn ich zu http: // <Host>: <Port> gehe, wird anstelle meiner Foobar-App immer noch die Tomcat-Startseite angezeigt. Ich habe sogar Tomcat neu gestartet. Was mache ich falsch?Ich war einen Monat lang mit diesem Problem konfrontiert. Das Einfügen eines Kontext-Tags in die Datei server.xml ist nicht sicher. Es wirkt sich auf die Kontextelemente aus, die für alle anderen Hosts bereitgestellt werden. Bei großen Apps sind Verbindungsfehler erforderlich, auch keine gute Isolierung. Sie können beispielsweise über den Ordnernamen domain2 auf andere Websites zugreifen .com / domain1Folder !! auch Datenbanksitzungsverbindungen werden zweimal geladen! Der andere Weg ist die Datei ROOT.xml mit einem Kontext-Tag mit vollständigem Pfad, z.
Geben Sie in conf / catalogina / webappsfoldername die Kriegsdatei als ROOT.war in webappsfoldername ein und geben Sie auch den Host an, z
Bei diesem Ansatz haben Benutzersitzungen auch für Apps des gleichen Typs keine gute Isolation! Sie können sich in App1 befinden, wenn App1 mit App2 identisch ist. Sie können sich nach der Anmeldung durch eine serverseitige Sitzung automatisch bei App2 anmelden ?! Sie müssen also die Benutzersitzung im clientseitigen Cache und nicht mit jsessionid halten! Wir können den Motornamen von localhost ändern, um ihn zu lösen. Aber sagen wir mal, das Spielen mit Kater braucht mehr Zeit als das Spielen mit anderen Katzen!
quelle
Es wird nicht empfohlen, die Serverkonfiguration wie server.xml oder ROOT.xml zu aktualisieren.
Sie können eine Konfigurationsdatei context.xml in das META-INF-Verzeichnis Ihrer Webanwendung einfügen, einschließlich der Einstellung für den Kontextpfad. Dadurch wird die Standardservereinstellung überschrieben.
dh:
quelle
<Context docBase="yourAppName" path="" reloadable="true">
quelle
Tomcat 8: Nach vielen Suchvorgängen ist dies nur Arbeitscode: in server.xml
Starten Sie Tomcat neu und stellen Sie sicher, dass beim Zugriff auf 127.0.0.1:8080 der Inhalt in 127.0.0.1:8080/apple angezeigt wird
Mein Projekt war eine Java-Webanwendung, die von NetBeans erstellt wurde. Ich habe den Kontextpfad in der Projektkonfiguration festgelegt, nichts anderes, auch wenn ich apple.war in den Ordner webapps gestellt habe.
quelle
Bei mir haben beide Antworten funktioniert.
Hinweis: Wenn Sie docBase im Kontext deklarieren, ignorieren Sie appBase auf dem Host.
ROOT.war
und ihn unter Webanwendungen zu platzieren. Jetzt landen unübertroffene URL-Anfragen aus anderen Kriegen (Kontextpfaden) in diesem Krieg. Dies ist eine bessere Möglichkeit, den ROOT-Kontextpfad ("/ **") zu verarbeiten.Die zweite Option ist das (doppelte) Laden der Kriege aus dem Webapps-Ordner. Außerdem benötigt es nur einen unkomprimierten Kriegsordner, was Kopfschmerzen bereitet.
quelle
In Tomcat 8.X können Sie unter tomcat-Ausgangsverzeichnis / conf / folder in server.xml ein
<Context>
Tag unter einem<Host>
Tag hinzufügen, wie unten gezeigt. Sie müssen den Server jedoch neu starten, um wirksam zu werdenODER Wenn Sie Tomcat 7.X verwenden, können Sie die Datei context.xml im Ordner WEB-INF in Ihrem Projekt hinzufügen. Der Inhalt der von mir verwendeten Datei ist wie gezeigt. und es hat gut funktioniert für mich. In diesem Fall müssen Sie den Server nicht neu starten.
quelle
localhost:8080/<Your App Directory Name>/
und dieselocalhost:8080/<your app path you wish>/
beiden URLs funktionieren gleichzeitig. Fand diese beiden extrahierten Ordner unter$CATALINA_HOME/webapps/
.Die einfachste und flexibelste Lösung finden Sie unten: In $ {Tomcat_home} /config/server.xml
Ändern Sie das autoDeploy = "false" deployOnStartup = "false" unter dem Host- Element wie folgt. Dies ist ein Muss.
Fügen Sie unter Host- Element die folgende Zeile hinzu .
Mit dem obigen Ansatz können wir so viele Anwendungen unter Webanwendungen mit unterschiedlichen Kontextpfadnamen hinzufügen.
quelle
Der folgende Trick hat bei mir funktioniert.
1) Kommentieren / löschen Sie die folgende Konfiguration aus der Datei server.xml (im Ordner conf) von tomcat.
2) Löschen Sie den vorhandenen ROOT-Ordner (falls vorhanden), der sich im Tomcat-Webanwendungsordner befindet. Und benennen Sie Ihre Kriegsdatei (zB: test.war) in ROOT.war um.
Denken Sie daran, dass beim Umbenennen der Kriegsdatei in ROOT.war "ROOT" in Großbuchstaben angegeben werden sollte.
Einschränkung: Sie können nur eine Anwendung in einer Tomcat-Instanz bereitstellen.
quelle