Detaillierte Erläuterung zur Lösung des Konflikts von Projekt-URLs, der durch das Festlegen des Standardpfads von Tomcat verursacht wird

Detaillierte Erläuterung zur Lösung des Konflikts von Projekt-URLs, der durch das Festlegen des Standardpfads von Tomcat verursacht wird

Vorwort

Tomcat ist ein hervorragender Java-Container, dennoch gibt es einige kleine Fallstricke, die sich nicht vermeiden lassen. Ich werde sie hier aufzeichnen.

START

Frage

  • URL-Pfadkonflikte nach der Bereitstellung mehrerer Projekte

Szenariobeschreibung

1. Unter Webapps gibt es zwei Projekte, Projekt A und Projekt B. Mit Ausnahme der Verwaltungsinformationsschnittstelle verfügen die beiden anderen Projekte über Sicherheitsüberprüfungsmechanismen.

2. Da projectA nicht vom Front-End und Back-End getrennt ist, sind die statischen Ressourcen auch im Java-Projekt vorhanden. Bei Schnittstellenanforderungen in statischen Ressourcen wird der Paketname nicht geschrieben. Beispielsweise verkettet der JS-Code beim Anmelden die Server-IP+Port+aktuell festgelegte URL (/login), fügt aber nicht /projectA vor /login hinzu. Daher gibt es beim Testen auf dem lokalen Computer kein Problem, und ein solches Problem tritt nur beim Bereitstellen auf. Dies ist auch ein Problem, das weiter unten gelöst wird.

3.projectB ist ein normal laufendes Projekt

Lösung für Szenario 2

Öffnen Sie die Konfigurationsdatei in Tomcat und fügen Sie <Context> im Tag <Host> hinzu, um es als Standardzugriffspfad des Servers festzulegen und so den Paketnamen zu vermeiden. Diese Methode ist jedoch äußerst informell und wird nicht empfohlen.

<Hostname="localhost" appBase="webapps"
      unpackWARs="true" autoDeploy="true">

    <!-- SingleSignOn-Ventil, gemeinsame Authentifizierung zwischen Webanwendungen
       Dokumentation unter: /docs/config/valve.html -->
    <!--
    <Valve-Klassenname="org.apache.catalina.authenticator.SingleSignOn" />
    -->

    <!-- Beispiel: Das Zugriffsprotokoll verarbeitet alle Daten.
       Dokumentation unter: /docs/config/valve.html
       Hinweis: Das verwendete Muster entspricht der Verwendung von pattern="common" -->
    <Valve-Klassenname="org.apache.catalina.valves.AccessLogValve" Verzeichnis="Protokolle"
        Präfix="localhost_access_log" Suffix=".txt"
        Muster="%h %l %u %t &quot;%r&quot; %s %b" />
    <Kontextpfad="" docBase="/usr/tomcat8.6/webapps/sc_edu" debug="0" reloadable="true"/>

  </Host>

Code Erklärung

<Kontextpfad="" docBase="/usr/tomcat8.6/webapps/sc_edu" debug="0" reloadable="true"/>
  • path und doBase geben zusammen den angegebenen Paketpfad an. Der Einfachheit halber können Sie docBase direkt deinstallieren.
  • Starten Sie Tomcat neu und testen Sie, ob auf die Ressourcen im Paket direkt über IP+Port zugegriffen werden kann. Beim Zugriff auf Ressourcen in anderen Paketen treten jedoch URL-Mehrdeutigkeiten auf. Ursprünglich wollte ich auf Projekt B zugreifen, aber es war Projekt A zugeordnet. Nur bei einigen URLs treten solche Probleme auf.

Dann besteht unsere Lösung darin, einen weiteren Tomcat zu installieren und nur Projekte bereitzustellen, die eine direkte Pfadzuordnung erfordern

Dadurch wird das Verzeichnis wiederhergestellt, in dem sich Tomcat befindet, und der Befehl cp kopiert

$> cp -r tomcat8.5/ tomcat8.6/

Verschieben Sie dann ProjektA in Tomcat8.5 nach Tomcat8.6.

Löschen Sie tomcat8.5

<Kontextpfad="" docBase="/usr/tomcat8.6/webapps/sc_edu" debug="0" reloadable="true"/>

In Tomcat8.6 müssen die folgenden Änderungen an service.xml vorgenommen werden.

Ändern Sie den Port, der dem Herunterfahren entspricht, auf 8006, solange dieser sich von Tomcat8.5 unterscheidet und der Port keine Konflikte verursacht.

<Server-Port="8006" shutdown="HERUNTERFAHREN">

Ändern Sie den Port entsprechend der Anforderung. Das Prinzip ist das gleiche wie oben.

<Anschlussport="8081" Protokoll="HTTP/1.1"
        VerbindungsTimeout="20000"
        UmleitungsPort="8443" />

Der Inhalt im <Host>-Tag wird kopiert und muss in den entsprechenden Mapping-Pfad geändert werden.

Auf diese Weise können zwei Tomcats gleichzeitig ausgeführt werden, ohne dass sich das Starten und Herunterfahren gegenseitig beeinflusst.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Analyse und Lösung des abnormalen Problems beim Laden von JAR in Tomcat
  • Detailliertes Verständnis und vergleichende Analyse der Server Apache, Tomcat und Nginx
  • Erläuterung verschiedener Möglichkeiten zum Ausführen von Tomcat unter Linux
  • So richten Sie virtuelle Verzeichnisse ein und konfigurieren virtuelle Pfade in Tomcat 7.0
  • Erklärung zur Verwendung von Tomcat mit IDEA Remote Debug
  • Tomcat verwendet Log4j zur Ausgabe des catalina.out-Protokolls
  • Connector-Konfiguration in Tomcat
  • Erläuterung zur Verwendung und Änderung des Standard-Programmveröffentlichungspfads von Tomcat
  • Detaillierte Schritte zum Importieren von Eclipse-Projekten in IDEA und zum Bereitstellen in Tomcat
  • Lösung für den Fall, dass der Tomcat-Server tomcat7w.exe nicht öffnen kann

<<:  Detaillierte Anweisungen zum Download und Installationsprozess von MySQL 5.7.18

>>:  Mysql 5.7.18 Verwenden von MySQL proxies_priv zur Implementierung einer ähnlichen Benutzergruppenverwaltung

Artikel empfehlen

Ausführliches Tutorial zur Installation von MySQL 8.0.19 (Windows 64 Bit)

Inhaltsverzeichnis MySQL initialisieren MySQL-Die...

Detaillierte Erklärung des Fischschwarm-Algorithmus im CocosCreator-Spiel

Vorwort Ich wollte vor kurzem CocosCreator lernen...

Vollständige Analyse des MySQL INT-Typs

Vorwort: Integer ist einer der am häufigsten verw...

Zusammenfassung der sieben MySQL JOIN-Typen

Bevor wir beginnen, erstellen wir zwei Tabellen, ...

Detaillierte Schritte zur Installation des NERDTree-Plugins in Vim unter Ubuntu

NERDTree ist ein Dateisystembrowser für Vim. Mit ...

Design-Story: Der Wachmann, der sich Nummernschilder nicht merken kann

<br />Um die Fahrzeuge zu regeln, die in die...

Implementierung der MySQL-Benutzerrechteverwaltung

1. Einführung in MySQL-Berechtigungen Es gibt 4 T...

base target="" steuert den Ziel-Open-Frame des Links

<base target=_blank> ändert den Zielrahmen d...

Lösung für das Problem der Zeilenhöhe der Elementtabellenkopfzeile

Inhaltsverzeichnis Vorwort 1. Ursache des Problem...

So konvertieren Sie ein JavaScript-Array in eine Baumstruktur

1. Nachfrage Das Backend stellt solche Daten bere...

Zusammenfassung der grundlegenden Verwendung von JS-Arrays

Vorwort Arrays sind eine spezielle Art von Objekt...