So stellen Sie eine WAR-Datei in Tomcat bereit

Bereitstellen einer WAR-Datei für Tomcat

1. Überblick

Apache Tomcat ist einer der beliebtesten Webserver in der Java-Community. Es wird alsservlet containerausgeliefert, das Web-Archive mit der WAR-Erweiterung bedienen kann.

It provides a management dashboard, über die Sie eine neue Webanwendung bereitstellen oder eine vorhandene Bereitstellung aufheben können, ohne den Container neu starten zu müssen. Dies ist besonders in Produktionsumgebungen nützlich.

In diesem Artikel geben wir einen kurzen Überblick über Tomcat und gehen dann auf verschiedene Ansätze zum Bereitstellen einer WAR-Datei ein.

Weitere Lektüre:

Einführung in Apache Tomcat

Eine kurze und praktische Anleitung zur Installation und Konfiguration von Apache Tomcat.

Read more

Stellen Sie eine Spring Boot WAR auf einem Tomcat-Server bereit

Erfahren Sie, wie Sie eine Spring Boot-Anwendung für die Bereitstellung auf einem Tomcat-Server konfigurieren.

Read more

Ändern des Tomcat-HTTP-Ports auf 80

Erfahren Sie, wie Sie einen Apache Tomcat-HTTP-Server für die Ausführung auf Port 80 konfigurieren.

Read more

2. Tomcat-Struktur

Bevor wir beginnen, sollten wir uns mit einigen Terminologie- und Umgebungsvariablen vertraut machen.

2.1. Umgebungsvariablen

Wenn Sie schon einmal mit Tomcat gearbeitet haben, sind Ihnen diese sehr vertraut:

$CATALINA_HOME

Diese Variable zeigt auf das Verzeichnis, in dem unser Server installiert ist.

$CATALINA_BASE

Diese Variable verweist auf das Verzeichnis einer bestimmten Instanz von Tomcat. Möglicherweise sind mehrere Instanzen installiert. Wenn diese Variable nicht explizit festgelegt wird, wird ihr der gleiche Wert wie$CATALINA_HOME zugewiesen.

Webanwendungen werden im Verzeichnis$CATALINA_HOME\webappsbereitgestellt.

2.2. Terminologie

Document root. Verweist auf das oberste Verzeichnis einer Webanwendung, in dem sich alle Anwendungsressourcen wie JSP-Dateien, HTML-Seiten, Java-Klassen und Bilder befinden.

Context path. Verweist auf den Speicherort, der relativ zur Serveradresse ist und den Namen der Webanwendung darstellt.

Wenn unsere Webanwendung beispielsweise im Verzeichnis$CATALINA_HOME\webapps\myapp abgelegt wird, wird über die URLhttp://localhost/myapp auf sie zugegriffen, und ihr Kontextpfad lautet/myapp.

WAR. Ist die Erweiterung einer Datei, die eine Webanwendungsverzeichnishierarchie im ZIP-Format verpackt und die Abkürzung für Web Archive. Java-Webanwendungen werden normalerweise als WAR-Dateien für die Bereitstellung gepackt. Diese Dateien können über die Befehlszeile oder mit einer IDE wie Eclipse erstellt werden.

Nach der Bereitstellung unserer WAR-Datei entpackt Tomcat sie und speichert alle Projektdateien im Verzeichniswebappsin einem neuen Verzeichnis, das nach dem Projekt benannt ist.

3. Tomcat-Setup

Der Tomcat Apache-Webserver ist eine kostenlose Software, diedownloaded from their website betragen kann. Es ist erforderlich, dass auf dem Computer des Benutzers ein JDK verfügbar ist und die UmgebungsvariableJAVA_HOMEkorrekt eingestellt ist.

3.1. Starten Sie Tomcat

Wir können den Tomcat-Server starten, indem wir einfach das Skriptstartupausführen, das sich bei$CATALINA_HOMEin\startup befindet. In jeder Installation gibt es.bat und.sh.

Wählen Sie die entsprechende Option, je nachdem, ob Sie ein Windows- oder ein Unix-basiertes Betriebssystem verwenden.

3.2. Rollen konfigurieren

Während der Bereitstellungsphase stehen uns einige Optionen zur Verfügung. Eine davon ist die Verwendung des Verwaltungs-Dashboards von Tomcat. Um auf dieses Dashboard zugreifen zu können, muss ein Administrator mit den entsprechenden Rollen konfiguriert sein.

Um auf das Dashboard zugreifen zu können, benötigt der Administrator die Rollemanager-gui. Später müssen wir eine WAR-Datei mit Maven bereitstellen. Dazu benötigen wir auch die Rollemanager-script.

Nehmen wir diese Änderungen in$CATALINA_HOME\conf omcat-users vor:



Weitere Details zu den verschiedenen Tomcat-Rollen finden Sie unterthis official link.

3.3. Verzeichnisberechtigungen festlegen

Vergewissern Sie sich abschließend, dass das Tomcat-Installationsverzeichnis Lese- / Schreibrechte besitzt.

3.4. Installation testen

Um zu testen, ob Tomcat ordnungsgemäß eingerichtet ist, führen Sie das Startskript (startup.bat /startup.sh) aus. Wenn auf der Konsole keine Fehler angezeigt werden, können Sie dies überprüfen, indem Siehttp://localhost:8080 aufrufen.

Wenn Sie die Tomcat-Startseite sehen, haben wir den Server korrekt installiert.

3.5. Portkonflikt lösen

Standardmäßig ist Tomcat so eingestellt, dass Verbindungen an Port8080 abgehört werden. Wenn bereits eine andere Anwendung an diesen Port gebunden ist, teilt uns die Startkonsole dies mit.

Um den Port zu ändern, können Sie die Serverkonfigurationsdateiserver.xml bearbeiten, die sich bei$CATALINA_HOME\conf\server.xml. befindet. Standardmäßig lautet die Connector-Konfiguration wie folgt:

Wenn wir beispielsweise unseren Port in8081 ändern möchten, müssen wir das Portattribut des Connectors folgendermaßen ändern:

Manchmal ist der von uns gewählte Port nicht standardmäßig geöffnet. In diesem Fall müssen wir diesen Port mit den entsprechenden Befehlen im Unix-Kernel öffnen oder die entsprechenden Firewall-Regeln in Windows erstellen Dieser Beitrag.

4. Von Maven aus bereitstellen

Wenn wir Maven für die Bereitstellung unserer Webarchive verwenden möchten, müssen wir Tomcat als Server in dersettings.xml-Datei von Maven konfigurieren.

Es gibt zwei Speicherorte, an denen sich die Dateisettings.xmlbefindet:

  • Die Maven-Installation:$\{maven.home}/conf/settings.xml

  • Installation eines Benutzers:$\{user.home}/.m2/settings.xml

Sobald Sie es gefunden haben, fügen Sie Tomcat wie folgt hinzu:


    TomcatServer
    admin
    password

Wir müssen jetzt eine grundlegende Webanwendung von Maven erstellen, um die Bereitstellung zu testen. Navigieren wir zu dem Ort, an dem wir die Anwendung erstellen möchten.

Führen Sie diesen Befehl in der Konsole aus, um eine neue Java-Webanwendung zu erstellen:

mvn archetype:generate -DgroupId=com.example -DartifactId=tomcat-war-deployment
  -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

Dadurch wird eine vollständige Webanwendung im Verzeichnistomcat-war-deployment erstellt, die, wenn wir sie jetzt bereitstellen und über den Browser darauf zugreifen,hello world! druckt.

Aber bevor wir das tun, müssen wir eine Änderung vornehmen, um die Bereitstellung von Maven zu ermöglichen. Gehen Sie also zupom.xml und fügen Sie dieses Plugin hinzu:


    org.apache.tomcat.maven
    tomcat7-maven-plugin
    2.2
    
        http://localhost:8080/manager/text
        TomcatServer
        /myapp
    

Beachten Sie, dass wir das Tomcat 7-Plugin verwenden, da es für die Versionen 7 und 8 ohne besondere Änderungen funktioniert.

Die Konfigurationurl ist die URL, an die wir unsere Bereitstellung senden. Tomcat weiß, was damit zu tun ist. Dasserver-Element ist der Name der Serverinstanz, die Maven erkennt. Schließlich definiert das Elementpath diecontext path unserer Bereitstellung.

Dies bedeutet, dass wir bei erfolgreicher Bereitstellung auf die Webanwendung zugreifen, indem wirhttp://localhost:8080/myapp drücken.

Jetzt können wir die folgenden Befehle von Maven ausführen.

So stellen Sie die Web-App bereit:

mvn tomcat7:deploy

So heben Sie die Bereitstellung auf:

mvn tomcat7:undeploy

So stellen Sie nach dem Vornehmen von Änderungen erneut bereit:

mvn tomcat7:redeploy

5. Mit Cargo Plugin bereitstellen

Cargo ist eine vielseitige Bibliothek, mit der wir die verschiedenen Arten von Anwendungscontainern auf standardmäßige Weise bearbeiten können.

5.1. Einrichtung der Frachtbereitstellung

In diesem Abschnitt erfahren Sie, wie Sie mit dem Maven-Plugin von Cargo ein WAR für Tomcat bereitstellen. In diesem Fall stellen wir es für eine Instanz der Version 7 bereit.

Um den gesamten Prozess in den Griff zu bekommen, erstellen wir zunächst eine neue Java-Webanwendung über die Befehlszeile:

mvn archetype:generate -DgroupId=com.example -DartifactId=cargo-deploy
  -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

Dadurch wird eine vollständige Java-Webanwendung im Verzeichniscargo-deployerstellt. Wenn wir diese Anwendung so wie sie ist erstellen, bereitstellen und laden, werdenHello World! im Browser gedruckt.

Im Gegensatz zum Tomcat7-Maven-Plugin erfordert das Cargo Maven-Plugin, dass diese Datei vorhanden ist.

Da unsere Webanwendung keine Servlets enthält, ist die Dateiweb.xmlehr einfach. Navigieren Sie also zum OrdnerWEB-INF unseres neu erstellten Projekts und erstellen Sie eineweb.xml-Datei mit folgendem Inhalt:




    cargo-deploy
    
        index.jsp
    

Damit Maven die Befehle von Cargo erkennen kann, ohne den vollständig qualifizierten Namen einzugeben, müssen wir das Cargo Maven-Plugin einer Plugin-Gruppe insettings.xml.von Maven hinzufügen

Fügen Sie als unmittelbares untergeordnetes Element des Elements root<settings></settings>Folgendes hinzu:


    org.codehaus.cargo

5.2. Lokale Bereitstellung

In diesem Unterabschnitt bearbeiten wir unserepom.xml, um sie an unsere neuen Bereitstellungsanforderungen anzupassen.

Fügen Sie das Plugin wie folgt hinzu:


    
        
            org.codehaus.cargo
            cargo-maven2-plugin
            1.5.0
            
                
                    tomcat7x
                    installed
                    Insert absolute path to tomcat 7 installation
                
                
                    existing
                    Insert absolute path to tomcat 7 installation
                
            
       
    

Die neueste Version zum Zeitpunkt des Schreibens ist1.5.0. Die neueste Version ist jedoch immerhere zu finden.

Beachten Sie, dass wir die Verpackung explizit als WAR definieren. Andernfalls schlägt unser Build fehl. In der Plugins Sektion fügen wir dann das cargo maven2 Plugin hinzu. Zusätzlichwe add a configuration section where we tell Maven that we are using a Tomcat container and also an existing installation.

Indem Sie den Containertyp aufinstalled setzen, teilen wir Maven mit, dass auf dem Computer eine Instanz installiert ist, und geben die absolute URL für diese Installation an.

Indem Sie den Konfigurationstyp aufexisting setzen, teilen wir Tomcat mit, dass ein vorhandenes Setup vorhanden ist und keine weitere Konfiguration erforderlich ist.

Die Alternative wäre, cargo anzuweisen, die angegebene Version herunterzuladen und einzurichten, indem eine URL angegeben wird. Unser Fokus liegt jedoch auf der WAR-Bereitstellung.

Es ist erwähnenswert, dass unabhängig davon, ob wir Maven 2.x oder Maven 3.x verwenden, das Cargo maven2-Plugin für beide funktioniert.

Wir können unsere Anwendung jetzt installieren, indem wir Folgendes ausführen:

mvn install

und bereitstellen durch:

mvn cargo:deploy

Wenn alles gut geht, sollten wir in der Lage sein, unsere Webanwendung durch Laden vonhttp://localhost:8080/cargo-deploy. auszuführen

5.3. Remote-Bereitstellung

Für eine Remote-Bereitstellung müssen wir nur den Konfigurationsabschnitt unsererpom.xmländern. Remote-Bereitstellung bedeutet, dass wir keine lokale Installation von Tomcat haben, sondern auf das Manager-Dashboard auf einem Remote-Server zugreifen können.

Ändern wir also diepom.xml so, dass der Konfigurationsabschnitt folgendermaßen aussieht:


    
        tomcat8x
        remote
    
    
        runtime
        
            admin
            admin
            http://localhost:8080/manager/text
              
        
    

Dieses Mal ändern wir den Containertyp voninstalled inremote und den Konfigurationstyp vonexisting inruntime. Zuletzt fügen wir der Konfiguration Authentifizierungs- und Remote-URL-Eigenschaften hinzu.

Stellen Sie sicher, dass die Rollen und Benutzer wie zuvor bereits in$CATALINA_HOME/conf/tomcat-users.xml vorhanden sind.

Wenn Sie dasselbe Projekt für die Bereitstellung vonremotebearbeiten, entfernen Sie zuerst die Bereitstellung der vorhandenen WAR:

mvn cargo:undeploy

Bereinigen Sie das Projekt:

mvn clean

es installieren:

mvn install

Stellen Sie es schließlich bereit:

mvn cargo:deploy

Das ist es.

6. Bereitstellen von Eclipse

Mit Eclipse können wir Server einbetten, um die Bereitstellung von Webprojekten in den normalen Workflow einzufügen, ohne die IDE verlassen zu müssen.

6.1. Tomcat in Eclipse einbetten

Wir können eine Installation in Eclipse einbetten, indem wir den Menüpunktwindow in der Taskleiste und dannpreferences in der Dropdown-Liste auswählen.

Im linken Bereich des angezeigten Fensters finden Sie ein Baumgitter mit Präferenzelementen. Wir können dann zueclipse → servers navigieren oder einfachservers in die Suchleiste eingeben.

Wir wählen dann das Installationsverzeichnis aus, falls es noch nicht für uns geöffnet ist, und wählen die Tomcat-Version aus, die wir heruntergeladen haben.

Auf der rechten Seite des Fensters wird eine Konfigurationsseite angezeigt, auf der wir die Option Aktivieren auswählen, um diese Serverversion zu aktivieren und zum Installationsordner zu navigieren.

image

Wir übernehmen Änderungen und wenn wir das nächste Mal die Serveransicht über das Untermenüwindows → show viewvon Eclipse öffnen, ist der neu konfigurierte Server vorhanden und wir können Anwendungen darauf starten, stoppen und bereitstellen.

6.2. Stellen Sie die Webanwendung in Embedded Tomcat bereit

Um eine Webanwendung auf Tomcat bereitzustellen, muss sie in unserem Arbeitsbereich vorhanden sein.

Öffnen Sie die Ansichtservers vonwindow → show view und suchen Sie nach Servern. Wenn es geöffnet ist, können wir einfach mit der rechten Maustaste auf den von uns konfigurierten Server klicken undadd deployment aus dem angezeigten Kontextmenü auswählen.

 

image

Öffnen Sie im angezeigten DialogfeldNew Deployment die Dropdown-Listeproject und wählen Sie das Webprojekt aus.

Unter dem KombinationsfeldProject befindet sich ein AbschnittDeploy Type, wenn wirExploded Archive(development mode),our changes in the application will be synced live without having to redeploy auswählen. Dies ist die beste Option während der Entwicklung, da es sehr effizient ist.

image

 

Wenn SiePackaged Archive(production mode) auswählen, müssen wir jedes Mal, wenn wir Änderungen vornehmen, diese erneut bereitstellen und im Browser anzeigen. Dies ist nur für die Produktion am besten geeignet, Eclipse macht es jedoch genauso einfach.

6.3. Stellen Sie die Webanwendung an einem externen Speicherort bereit

Wir entscheiden uns normalerweise für die Bereitstellung einer WAR über Eclipse, um das Debuggen zu vereinfachen. Es kann vorkommen, dass wir möchten, dass es an einem anderen Ort als den von den eingebetteten Servern von Eclipse verwendeten bereitgestellt wird. In den meisten Fällen ist unser Produktionsserver online und wir möchten die Webanwendung aktualisieren.

Wir können dieses Verfahren umgehen, indem wir es im Produktionsmodus bereitstellen, dieDeploy Location im DialogfeldNew Deployment notieren und von dort aus die WAR auswählen.

Während der Bereitstellung können Sie anstelle eines eingebetteten Servers die Option<Externally Launched> in der Ansichtserversneben der Liste der eingebetteten Server auswählen. Wir navigieren zumwebapps-Verzeichnis einer externen Tomcat-Installation.

7. Bereitstellung von IntelliJ IDEA

Um eine Webanwendung auf Tomcat bereitzustellen, muss sie vorhanden und bereits heruntergeladen und installiert sein.

7.1. Lokale Konfiguration

Öffnen Sie das MenüRunund klicken Sie auf die OptionenEdit Configurations.

 

image

Wenn Sie im linken Bereich nachTomcat Server suchen, klicken Sie auf das Pluszeichen im Menü, suchen Sie nachTomcat und wählen SieLocal aus. Geben Sie in das NamensfeldTomcat 7/8 ein (abhängig von Ihrer Version).

image

 

Klicken Sie auf die SchaltflächeConfigure… und navigieren Sie im FeldTomcat Home zum Ausgangsort Ihrer Installation und wählen Sie ihn aus.

 

image

Stellen Sie die SeiteStartup optional aufhttp://localhost:8080/ undHTTP port: 8080 ein und ändern Sie den Port entsprechend.

Gehen Sie zur RegisterkarteDeployment und klicken Sie auf das Symbol +, wählen Sie das Artefakt aus, das Sie dem Server hinzufügen möchten, und klicken Sie auf OK

 

image

 

7.2. Remote-Konfiguration

Befolgen Sie die gleichen Anweisungen wie für lokale Tomcat-Konfigurationen, aber auf der Registerkarte Server müssen Sie den Remote-Speicherort der Installation eingeben.

8. Bereitstellung durch Kopieren des Archivs

Wir haben gesehen, wie man eine WAR aus Eclipse exportiert. Wir können es unter anderem bereitstellen, indem wir es einfach in das Verzeichnis$CATALINA_HOME\webappseiner beliebigen Tomcat-Instanz ablegen. Wenn die Instanz ausgeführt wird, wird die Bereitstellung sofort gestartet, wenn Tomcat das Archiv entpackt und den Kontextpfad konfiguriert.

Wenn die Instanz nicht ausgeführt wird, stellt der Server das Projekt beim nächsten Start bereit.

9. Bereitstellung über Tomcat Manager

Angenommen, wir haben unsere WAR-Datei bereits zur Hand und möchten sie über das Verwaltungs-Dashboard bereitstellen. Sie können auf das Manager-Dashboard zugreifen, indem Siehttp://localhost:8080/manager aufrufen.

Das Dashboard besteht aus fünf verschiedenen Abschnitten:Manager,Applications,Deploy,Diagnostics undServer Information. Wenn Sie zum AbschnittDeploy gehen, werden Sie finden zwei Unterabschnitte.

9.1. Bereitstellen einer Verzeichnis- oder WAR-Datei auf dem Server

Wenn sich die WAR-Datei auf dem Server befindet, auf dem die Tomcat-Instanz ausgeführt wird, können wir das erforderlicheContext Path-Feld ausfüllen, dem ein Schrägstrich „/“ vorangestellt ist.

Angenommen, wir möchten, dass auf unsere Webanwendung über den Browser mit der URLhttp://localhost:8080/myapp zugegriffen wird. Dann enthält unser Kontextpfadfeld/myapp.

Wir überspringen das FeldXML Configuration file URLund gehen zum FeldWAR or Directory URL. Hier geben wir die absolute URL der Web-Archiv-Datei ein, wie sie auf unserem Server angezeigt wird. Angenommen, der Speicherort unserer Datei istC:/apps/myapp.war, dann geben wir diesen Speicherort ein. Vergessen Sie nicht die WAR-Erweiterung.

Danach können wir auf die Schaltflächedeploy klicken. Die Seite wird neu geladen und die folgende Meldung sollte angezeigt werden:

OK - Deployed application at context path /myapp

oben auf der Seite.

Darüber hinaus sollte unsere Anwendung auch im AbschnittApplications der Seite angezeigt werden.

9.2. Zu implementierende WAR-Datei

Klicken Sie einfach auf die Schaltflächechoose file, navigieren Sie zum Speicherort der WAR-Datei, wählen Sie sie aus und klicken Sie dann auf die Schaltflächedeploy.

In beiden Situationen teilt uns die Tomcat-Konsole mit, dass die Bereitstellung erfolgreich war, und zeigt eine Meldung wie die folgende an:

INFO: Deployment of web application archive \path\to\deployed_war has finished in 4,833 ms

10. Fazit

In dieser Beschreibung haben wir uns auf die Bereitstellung einer WAR auf einem Tomcat-Server konzentriert.