Guida all'applicazione Tomcat Manager

1. Introduzione

In questo tutorial, daremo uno sguardo approfondito all'applicazione Tomcat Manager.

In poche parole, l'app Tomcat Manager è un'applicazione web che è inclusa nel pacchetto del server Tomcat e ci fornisce le funzionalità di base di cui abbiamo bisogno per gestire le nostre applicazioni web distribuite.

Come vedremo, l'applicazione ha molte funzionalità e servizi. Oltre a permetterci di gestire le applicazioni distribuite, possiamo anche vedere lo stato e la configurazione del server e delle sue applicazioni.

2. Installazione di Tomcat

Prima di approfondire l'app Tomcat Manager, dobbiamo prima installare un server Tomcat.

Fortunatamente, l'installazione di Tomcat è un processo semplice. Fare riferimento alla nostra guida Introduzione ad Apache Tomcat per assistenza nell'installazione di Tomcat. In questo tutorial, utilizzeremo l'ultima versione di Tomcat 9.

3. Accesso all'app Tomcat Manager

Ora, diamo un'occhiata a come utilizzare l'app Tomcat Manager. Abbiamo due opzioni qui: possiamo scegliere di utilizzare l'applicazione basata sul web (HTML) o il servizio web basato sul testo.

Il servizio basato su testo è ideale per lo scripting, mentre l'applicazione HTML è progettata per gli esseri umani.

L' applicazione basata sul Web è disponibile all'indirizzo:

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

Mentre il servizio di testo corrispondente è disponibile su:

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

Tuttavia, prima di poter accedere a questi servizi, è necessario configurare Tomcat. Per impostazione predefinita, è possibile accedervi solo dagli utenti con le autorizzazioni corrette.

Andiamo avanti e aggiungiamo tali utenti modificando il file conf / tomcat-users :

Come possiamo vedere, abbiamo aggiunto due nuovi utenti:

  • tomcatgui - ha il ruolo di manager-gui e può utilizzare l'applicazione basata sul web
  • tomcattext : ha il ruolo di gestore-script e può utilizzare il servizio Web basato su testo

Nella sezione successiva, vedremo come utilizzare questi due utenti per dimostrare le funzionalità dell'app Tomcat Manager.

4. Elenco delle applicazioni attualmente distribuite

In questa sezione impareremo come visualizzare un elenco delle applicazioni attualmente distribuite.

4.1. Utilizzando il Web

Apriamo // localhost: 8080 / manager / html / per visualizzare la pagina web dell'app Tomcat Manager. Dobbiamo autenticarci come utente tomcatgui per farlo.

Una volta effettuato l'accesso, la pagina web elenca tutte le applicazioni distribuite nella parte superiore della pagina. Per ogni applicazione, possiamo vedere se è in esecuzione o meno, il percorso del contesto e il numero di sessioni attive. Ci sono anche diversi pulsanti che possiamo usare per gestire le applicazioni:

4.2. Utilizzo del servizio di testo

In alternativa, possiamo elencare tutte le applicazioni distribuite utilizzando il servizio web di testo. Questa volta facciamo una richiesta di curl utilizzando l' utente tomcattext per autenticare:

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

Proprio come la pagina web, la risposta mostra tutte le applicazioni distribuite con il loro stato corrente e il numero di sessioni attive. Ad esempio, possiamo vedere che l' applicazione manager è in esecuzione e ha una sessione attiva:

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. Gestione delle applicazioni

Una delle funzionalità chiave che l'app Tomcat Manager ci consente di fare è arrestare, avviare e ricaricare le applicazioni.

5.1. Utilizzando il Web

Nel caso dell'applicazione Web, arrestare e avviare le applicazioni è solo questione di fare clic sui pulsanti nella pagina Web. L'esito e gli eventuali problemi sono riportati nel campo del messaggio nella parte superiore della pagina.

5.2. Utilizzo del servizio di testo

Allo stesso modo, possiamo arrestare e avviare le applicazioni utilizzando il servizio di testo. Fermiamo e quindi avvia l' applicazione di esempi utilizzando una richiesta di 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]

Il parametro di query del percorso indica quale applicazione gestire e deve corrispondere al percorso di contesto dell'applicazione.

Possiamo anche ricaricare le applicazioni per acquisire le modifiche alle classi o alle risorse. Tuttavia, questo funziona solo per le applicazioni decompresse in una directory e non distribuite come file WAR.

Ecco un esempio di come possiamo ricaricare l' applicazione Documenti utilizzando il servizio di testo:

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

Ricorda, però, che dobbiamo solo fare clic sul pulsante di ricarica per ottenere lo stesso risultato nell'applicazione web.

6. Sessioni in scadenza

Oltre a gestire le applicazioni, possiamo gestire le sessioni utente . L'app Tomcat Manager mostra i dettagli sulle sessioni utente correnti e ci consente di far scadere le sessioni manualmente.

6.1. Tramite l'interfaccia web

Possiamo visualizzare le sessioni utente correnti seguendo il collegamento nella colonna Sessioni per tutte le applicazioni elencate.

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.

Quindi abbiamo esplorato diversi esempi utilizzando l'applicazione basata su Web e il servizio Web basato su testo. Abbiamo visto come visualizzare, gestire e distribuire le applicazioni utilizzando una varietà di metodi. Quindi abbiamo esaminato come visualizzare la configurazione e lo stato del server.

Per ulteriori informazioni sull'app Tomcat Manager, consulta la documentazione in linea.