Guide de l'application Tomcat Manager

1. Introduction

Dans ce didacticiel, nous allons examiner en profondeur l'application Tomcat Manager.

En un mot, l'application Tomcat Manager est une application Web qui est fournie avec le serveur Tomcat et nous fournit les fonctionnalités de base dont nous avons besoin pour gérer nos applications Web déployées.

Comme nous allons le voir, l'application possède de nombreuses fonctionnalités et services. En plus de nous permettre de gérer les applications déployées, nous pouvons également voir l'état et la configuration du serveur et de ses applications.

2. Installation de Tomcat

Avant de plonger dans l'application Tomcat Manager, nous devons d'abord installer un serveur Tomcat.

Heureusement, l'installation de Tomcat est un processus simple. Veuillez consulter notre guide Introduction à Apache Tomcat pour obtenir de l'aide sur l'installation de Tomcat. Dans ce didacticiel, nous utiliserons la dernière version de Tomcat 9.

3. Accès à l'application Tomcat Manager

Voyons maintenant comment utiliser l'application Tomcat Manager. Nous avons ici deux options: nous pouvons choisir d'utiliser l'application Web (HTML) ou le service Web basé sur du texte.

Le service textuel est idéal pour les scripts, tandis que l'application HTML est conçue pour les humains.

L' application Web est disponible à l'adresse:

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

Alors que le service de texte correspondant est disponible sur:

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

Cependant, avant de pouvoir accéder à ces services, nous devons configurer Tomcat. Par défaut, il n'est accessible qu'aux utilisateurs disposant des autorisations appropriées.

Allons-y et ajoutons de tels utilisateurs en éditant le fichier conf / tomcat-users :

Comme nous pouvons le voir, nous avons ajouté deux nouveaux utilisateurs:

  • tomcatgui - a le rôle manager-gui et peut utiliser l'application Web
  • tomcattext - a le rôle de gestionnaire-script et peut utiliser le service Web basé sur du texte

Dans la section suivante, nous verrons comment nous pouvons utiliser ces deux utilisateurs pour démontrer les capacités de l'application Tomcat Manager.

4. Liste des applications actuellement déployées

Dans cette section, nous allons apprendre à voir une liste des applications actuellement déployées.

4.1. Utilisation du Web

Ouvrons // localhost: 8080 / manager / html / pour afficher la page Web de l'application Tomcat Manager. Nous devons nous authentifier en tant qu'utilisateur tomcatgui pour ce faire.

Une fois connecté, la page Web répertorie toutes les applications déployées en haut de la page. Pour chaque application, nous pouvons voir si elle est en cours d'exécution ou non, le chemin du contexte et le nombre de sessions actives. Il existe également plusieurs boutons que nous pouvons utiliser pour gérer les applications:

4.2. Utilisation du service de texte

Alternativement, nous pouvons répertorier toutes les applications déployées à l'aide du service Web de texte. Cette fois, nous faisons une requête curl en utilisant l' utilisateur tomcattext pour nous authentifier:

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

Tout comme la page Web, la réponse montre toutes les applications déployées avec leur état actuel et le nombre de sessions actives. Par exemple, nous pouvons voir que l' application du gestionnaire est en cours d'exécution et a une session active:

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. Gestion des applications

L'une des fonctionnalités clés que l'application Tomcat Manager nous permet de faire est d'arrêter, de démarrer et de recharger les applications.

5.1. Utilisation du Web

Dans le cas de l'application Web, pour arrêter et démarrer les applications, il suffit de cliquer sur les boutons de la page Web. Le résultat et les éventuels problèmes sont signalés dans le champ de message en haut de la page.

5.2. Utilisation du service de texte

De même, nous pouvons arrêter et démarrer des applications à l'aide du service de texte. Arrêtons puis démarrons l' application d' exemples à l' aide d'une requête curl :

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]

Le paramètre de requête de chemin indique quelle application gérer et doit correspondre au chemin de contexte de l'application.

Nous pouvons également recharger des applications pour récupérer les modifications apportées aux classes ou aux ressources. Cependant, cela ne fonctionne que pour les applications décompressées dans un répertoire et non déployées en tant que fichiers WAR.

Voici un exemple de la façon dont nous pouvons recharger l' application docs à l'aide du service de texte:

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

N'oubliez pas, cependant, il suffit de cliquer sur le bouton de rechargement pour obtenir la même chose dans l'application Web.

6. Sessions expirées

En plus de gérer les applications, nous pouvons gérer les sessions utilisateurs . L'application Tomcat Manager affiche des détails sur les sessions utilisateur actuelles et nous permet d'expirer manuellement les sessions.

6.1. Via l'interface Web

Nous pouvons afficher les sessions utilisateur actuelles en suivant le lien dans la colonne Sessions pour toutes les applications répertoriées.

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.

Ensuite, nous avons exploré plusieurs exemples utilisant l'application Web et le service Web textuel. Nous avons vu comment nous pouvions afficher, gérer et déployer des applications à l'aide de diverses méthodes. Ensuite, nous avons examiné comment afficher la configuration et l'état du serveur.

Pour en savoir plus sur l'application Tomcat Manager, consultez la documentation en ligne.