Handbuch zur Tomcat Manager-Anwendung

1. Einleitung

In diesem Tutorial werden wir uns die Tomcat Manager-Anwendung genauer ansehen.

Kurz gesagt, die Tomcat Manager-App ist eine Webanwendung, die mit dem Tomcat-Server gepackt ist und uns die grundlegenden Funktionen bietet, die wir zum Verwalten unserer bereitgestellten Webanwendungen benötigen.

Wie wir sehen werden, verfügt die Anwendung über viele Funktionen und Dienste. Neben der Verwaltung bereitgestellter Anwendungen können wir auch den Status und die Konfiguration des Servers und seiner Anwendungen anzeigen.

2. Tomcat installieren

Bevor wir uns mit der Tomcat Manager-App befassen, müssen wir zunächst einen Tomcat-Server installieren.

Glücklicherweise ist die Installation von Tomcat ein einfacher Vorgang. Weitere Informationen zur Installation von Tomcat finden Sie in unserem Handbuch zur Einführung in Apache Tomcat. In diesem Tutorial verwenden wir die neueste Tomcat 9-Version.

3. Zugriff auf die Tomcat Manager-App

Schauen wir uns nun an, wie Sie die Tomcat Manager-App verwenden. Wir haben hier zwei Möglichkeiten: Wir können wählen, ob wir die webbasierte (HTML) Anwendung oder den textbasierten Webdienst verwenden möchten.

Der textbasierte Dienst ist ideal für die Skripterstellung, während die HTML-Anwendung für Menschen konzipiert ist.

Die webbasierte Anwendung ist verfügbar unter:

  • http [s]: //: / manager / html /

Der entsprechende Textdienst ist verfügbar unter:

  • http [s]: //: / manager / text /

Bevor wir jedoch auf diese Dienste zugreifen können, müssen wir Tomcat konfigurieren. Standardmäßig können Benutzer nur mit den richtigen Berechtigungen darauf zugreifen.

Lassen Sie uns fortfahren und solche Benutzer hinzufügen, indem Sie die Datei conf / tomcat-users bearbeiten :

Wie wir sehen können, haben wir zwei neue Benutzer hinzugefügt:

  • tomcatgui - hat die Manager- GUI - Rolle und kann die webbasierte Anwendung verwenden
  • tomcattext - hat die Manager-Skript- Rolle und kann den textbasierten Webdienst verwenden

Im nächsten Abschnitt werden wir sehen, wie wir diese beiden Benutzer verwenden können, um die Funktionen der Tomcat Manager-App zu demonstrieren.

4. Auflisten der aktuell bereitgestellten Anwendungen

In diesem Abschnitt erfahren Sie, wie Sie eine Liste der aktuell bereitgestellten Anwendungen anzeigen.

4.1. Das Web nutzen

Öffnen Sie // localhost: 8080 / manager / html /, um die Webseite der Tomcat Manager-App anzuzeigen. Dazu müssen wir uns als Tomcatgui- Benutzer authentifizieren .

Nach dem Anmelden werden auf der Webseite alle bereitgestellten Anwendungen oben auf der Seite aufgelistet. Für jede Anwendung können wir sehen, ob sie ausgeführt wird oder nicht, den Kontextpfad und die Anzahl der aktiven Sitzungen. Es gibt auch mehrere Schaltflächen, mit denen wir die Anwendungen verwalten können:

4.2. Verwenden des Textdienstes

Alternativ können wir alle bereitgestellten Anwendungen mithilfe des Textwebdiensts auflisten. Dieses Mal stellen wir eine Curl- Anfrage mit dem Benutzer tomcattext, um sich zu authentifizieren:

curl -u tomcattext:baeldung //localhost:8080/manager/text/list

Genau wie auf der Webseite werden in der Antwort alle bereitgestellten Anwendungen mit ihrem aktuellen Status und der Anzahl der aktiven Sitzungen angezeigt. Beispielsweise können wir sehen, dass die Manageranwendung ausgeführt wird und eine aktive Sitzung hat:

OK - Listed applications for virtual host [localhost] /:running:0:ROOT /examples:running:0:examples /host-manager:running:0:host-manager /manager:running:1:manager /docs:running:0:docs

5. Anwendungen verwalten

Eine der wichtigsten Funktionen, die die Tomcat Manager-App ermöglicht, ist das Stoppen, Starten und Neuladen von Anwendungen.

5.1. Das Web nutzen

Bei der Webanwendung müssen Sie zum Stoppen und Starten der Anwendungen nur auf die Schaltflächen auf der Webseite klicken. Das Ergebnis und etwaige Probleme werden im Nachrichtenfeld oben auf der Seite gemeldet.

5.2. Verwenden des Textdienstes

Ebenso können wir Anwendungen über den Textdienst stoppen und starten. Lassen Sie uns die Beispielanwendung mit einer Curl- Anforderung stoppen und dann starten :

curl -u tomcattext:baeldung //localhost:8080/manager/text/stop?path=/examples OK - Stopped application at context path [/examples]
curl -u tomcattext:baeldung //localhost:8080/manager/text/start?path=/examples OK - Started application at context path [/examples]

Der Pfad Abfrage - Parameter geben an, welche Anwendung zu verwalten und den Kontextpfad der Anwendung übereinstimmen.

Wir können auch Anwendungen neu laden, um Änderungen an Klassen oder Ressourcen zu übernehmen. Dies funktioniert jedoch nur für Anwendungen, die in ein Verzeichnis entpackt und nicht als WAR-Dateien bereitgestellt werden.

Hier ist ein Beispiel, wie wir die Dokumentanwendung mithilfe des Textdienstes neu laden können :

curl -u tomcattext:baeldung //localhost:8080/manager/text/reload?path=/docs OK - Reloaded application at context path [/docs]

Denken Sie jedoch daran, dass wir nur auf die Schaltfläche zum erneuten Laden klicken müssen, um dasselbe in der Webanwendung zu erreichen.

6. Ablaufende Sitzungen

Zusätzlich zur Verwaltung von Anwendungen können wir Benutzersitzungen verwalten . Die Tomcat Manager-App zeigt Details zu aktuellen Benutzersitzungen an und ermöglicht es uns, Sitzungen manuell abzulaufen.

6.1. Über das Webinterface

Sie können aktuelle Benutzersitzungen anzeigen, indem Sie dem Link in der Spalte Sitzungen für alle aufgelisteten Anwendungen folgen .

In the example below, we can see there are two user sessions for the manager application. It shows the duration of the session, how long it has been inactive, and how long until it expires (30 minutes by default).

We can also manually destroy sessions by selecting them and choosing Invalidate selected sessions:

On the home page, there is a button to Expire sessions. This also destroys sessions that have been idle for the specified period of minutes.

6.2. Via the Text Web Service

Again, the text service equivalents are straightforward.

To view details on current user sessions, we call the session endpoint with the context path of the application we are interested in. In this example, we can see there are currently two sessions for the manager application:

curl -u tomcattext:baeldung "//localhost:8080/manager/text/sessions?path=/manager" OK - Session information for application at context path [/manager] Default maximum session inactive interval is [30] minutes Inactive for [2 - <3] minutes: [1] sessions Inactive for [13 - <14] minutes: [1] sessions

If we want to destroy inactive user sessions, then we use the expire endpoint. In this example, we expire sessions that have been inactive for more than 10 minutes for the manager application:

curl -u tomcattext:baeldung "//localhost:8080/manager/text/expire?path=/manager&idle=10" OK - Session information for application at context path [/manager] Default maximum session inactive interval is [30] minutes Inactive for [5 - <6] minutes: [1] sessions Inactive for [15 - 10] minutes: [1] sessions were expired

7. Deploying Applications

Now that we have seen how we can manage our applications, let's see how we can deploy new applications.

To get started, download the Tomcat sample WAR so we have a new application to deploy.

7.1. Using the Web

Now, we have a few options to deploy our new sample WAR using the web page. The easiest method is to upload the sample WAR file and deploy it:

The WAR is deployed with a context path matching the name of the WAR. If successful, the sample application is deployed, started, and displayed in the list of applications. If we follow the /sample link in the context path, we can view our running sample application:

So that we can deploy the same application again, let's click on the Undeploy button. As the name suggests, this will undeploy the application. Note that this also deletes all files and directories for the deployed application.

Next, we can deploy the sample WAR file by specifying the file path. We specify the file path URI to the WAR file or the unpacked directory plus the context path. In our case, the sample WAR is in the /tmp directory, and we are setting the context path to /sample:

Alternatively, we can specify the file path to an XML deployment descriptor. This approach allows us to specify additional attributes affecting how the application is deployed and run. In the example below, we are deploying the sample WAR application and making it reloadable.

Note that any path specified in the deployment descriptor is ignored. The context path is taken from the file name of the deployment descriptor. Take a look at the Common Attributes to understand why, as well as a description of all the other possible attributes:

7.2. Using the Text Service

Now let's have a look at deploying applications using the text service.

Firstly, let's undeploy our sample application:

curl -u tomcattext:baeldung "//localhost:8080/manager/text/undeploy?path=/sample" OK - Undeployed application at context path [/sample]

To deploy it again, we specify the context path and the location URI of the sample WAR file:

curl -u tomcattext:baeldung "//localhost:8080/manager/text/deploy?path=/sample&war=file:/tmp/sample.war" OK - Deployed application at context path [/sample]

Furthermore, we can also deploy an application using the XML deployment descriptor:

curl -u tomcattext:baeldung "//localhost:8080/manager/text/deploy?config=file:/tmp/sample.xml" OK - Deployed application at context path [/sample]

8. Viewing SSL Configuration

We need to enable SSL in Tomcat before we can see any SSL configuration. First, let's create a new certificate Keystore with a self-signed certificate in our Tomcat's conf directory:

keytool -genkey -alias tomcat -keyalg RSA -keystore conf/localhost-rsa.jks 

Next, we change the conf/tomcat-server.xml file to enable the SSL connector in Tomcat:

Once we restart Tomcat, we find it runs securely on port 8443!

8.1. Using the Web

Let's open //localhost:8443/manager/html to see the Tomcat Manager App again. It should look exactly the same.

We can now view our SSL configuration using the buttons under Diagnostics:

  • The Ciphers button shows all the SSL ciphers understood by Tomcat
  • Next, the Certificates button shows details of our self-signed certificate
  • Finally, the Trusted Certificates button shows trusted CA certificate details; in our example, it does not display anything of interest as we have not added any trusted CA certificates

Also, the SSL configuration files can be dynamically re-loaded at any time. We can re-load per virtual host by entering the hostname. Otherwise, all configuration is re-read:

8.2. Using the Text Service

Likewise, we can get the same information using the text service. We can view all:

  • SSL ciphers using the sslConnectorCiphers resource:
curl -ku tomcattext:baeldung "//localhost:8443/manager/text/sslConnectorCiphers"
  • Certificates using the sslConnectorCerts resource:
curl -ku tomcattext:baeldung "//localhost:8443/manager/text/sslConnectorCerts"
  • Trusted certificates using the sslConnectorTrustedCerts resource:
curl -ku tomcattext:baeldung "//localhost:8443/manager/text/sslConnectorTrustedCerts"

The SSL configuration can be re-loaded using:

curl -ku tomcattext:baeldung "//localhost:8443/manager/text/sslReload" OK - Reloaded TLS configuration for all TLS virtual hosts 

Note the -k option in the curl command as we are using a self-signed certificate.

9. Viewing the Server Status

The Tomcat Manager App also shows us the status of the server and the deployed applications. These pages are particularly handy when we want to view overall usage statistics.

If we follow the Server Status link, displayed in the top right, we see details on the server. The Complete Server Status link shows additional details on the applications:

There is no corresponding text service. However, we can modify the Server Status link to view the server status in XML. Unfortunately, doing the same for the Complete Server Status link may or may not work, depending on which Tomcat version we are using.

10. Saving Configuration

The text service allows us to save the current configuration to the Tomcat conf/server.xml. This is very useful if we have changed the configuration and want to save it for later use.

Thankfully, this also backs up the previous conf/server.xml, although any previous comments may be removed in the new conf/server.xml configuration file.

However, before we can do this, we need to add a new listener. Edit the conf/server.xml and add the following to the end of the list of the existing listeners:

Once we've restarted Tomcat, we can save our configuration using:

curl -u tomcattext:baeldung "//localhost:8080/manager/text/save" OK - Server configuration saved

11. Diagnostics

Lastly, let's look at additional diagnostic features provided by the Tomcat Manager App.

11.1. Thread Dump

We can use the text service to get a thread dump of the running Tomcat server:

curl -u tomcattext:baeldung "//localhost:8080/manager/text/threaddump" OK - JVM thread dump 2019-10-06 23:19:10.066 Full thread dump Java HotSpot(TM) 64-Bit Server VM (11.0.3+12-LTS mixed mode): ...

This is particularly useful when we need to analyze or find threads that are causing performance issues, such as long-running or deadlocked threads.

11.2. Finding Memory Leaks

Tomcat generally does a good job of preventing memory leaks. But when we do suspect a memory leak, the Tomcat Manager App has a memory leak detection service to help us. It performs a full garbage collection and detects any classes still resident in memory since the last time the application was reloaded.

We only need to run the Find Leaks button on the web page to detect leaks.

Similarly, the text service can run memory leak detection:

curl -u tomcattext:baeldung "//localhost:8080/manager/text/findleaks?statusLine=true" OK - No memory leaks found

11.3. Displaying Available Resources

The text service provides a list of available resources. In this example, we see we have one in-memory database available:

curl -u tomcattext:baeldung "//localhost:8080/manager/text/resources" OK - Listed global resources of all types UserDatabase:org.apache.catalina.users.MemoryUserDatabase

12. Conclusion

In this article, we’ve taken a detailed look at the Tomcat Manager App. We started by installing the application and seeing how to give access by configuring permissions for two distinct users.

Anschließend haben wir einige Beispiele mit der webbasierten Anwendung und dem textbasierten Webdienst untersucht. Wir haben gesehen, wie wir Anwendungen mit verschiedenen Methoden anzeigen, verwalten und bereitstellen können. Dann haben wir uns angesehen, wie die Konfiguration und der Status des Servers angezeigt werden.

Weitere Informationen zur Tomcat Manager-App finden Sie in der Online-Dokumentation.