Gids voor Tomcat Manager-applicatie

1. Inleiding

In deze tutorial gaan we dieper in op de Tomcat Manager-applicatie.

Kortom, de Tomcat Manager-app is een webtoepassing die is verpakt met de Tomcat-server en biedt ons de basisfunctionaliteit die we nodig hebben om onze geïmplementeerde webapplicaties te beheren.

Zoals we zullen zien, heeft de applicatie veel functies en services. Behalve dat we geïmplementeerde applicaties kunnen beheren, kunnen we ook de status en configuratie van de server en zijn applicaties zien.

2. Tomcat installeren

Voordat we ons verdiepen in de Tomcat Manager-app, moeten we eerst een Tomcat-server installeren.

Gelukkig is het installeren van Tomcat een eenvoudig proces. Raadpleeg onze Inleiding tot Apache Tomcat-gids voor hulp bij het installeren van Tomcat. In deze tutorial gebruiken we de nieuwste Tomcat 9-versie.

3. Toegang tot de Tomcat Manager-app

Laten we nu eens kijken hoe we de Tomcat Manager-app kunnen gebruiken. We hebben hier twee opties - we kunnen ervoor kiezen om de webgebaseerde (HTML) applicatie of de tekstgebaseerde webservice te gebruiken.

De op tekst gebaseerde service is ideaal voor scripts, terwijl de HTML-applicatie is ontworpen voor mensen.

De webgebaseerde applicatie is beschikbaar op:

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

Terwijl het overeenkomstige sms-service is beschikbaar op:

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

Voordat we echter toegang kunnen krijgen tot deze services, moeten we Tomcat configureren. Standaard is het alleen toegankelijk voor gebruikers met de juiste machtigingen.

Laten we doorgaan en dergelijke gebruikers toevoegen door het conf / tomcat-gebruikers het dossier:

Zoals we kunnen zien, hebben we twee nieuwe gebruikers toegevoegd:

  • tomcatgui - heeft de manager-gui rol en kan de webgebaseerde applicatie gebruiken
  • tomcattext - heeft de manager-script role en kan de op tekst gebaseerde webservice gebruiken

In de volgende sectie zullen we zien hoe we deze twee gebruikers kunnen gebruiken om de mogelijkheden van de Tomcat Manager-app te demonstreren.

4. Een lijst van momenteel geïmplementeerde applicaties

In dit gedeelte leren we hoe u een lijst kunt zien van de momenteel geïmplementeerde applicaties.

4.1. Met behulp van het web

Laten we // localhost: 8080 / manager / html / openen om de webpagina van de Tomcat Manager-app te bekijken. We moeten authenticeren als het tomcatgui gebruiker om dit te doen.

Eenmaal ingelogd, geeft de webpagina alle geïmplementeerde applicaties bovenaan de pagina weer. Voor elke applicatie kunnen we zien of deze actief is of niet, het contextpad en het aantal actieve sessies. Er zijn ook verschillende knoppen die we kunnen gebruiken om de applicaties te beheren:

4.2. Met behulp van de sms-service

Als alternatief kunnen we alle geïmplementeerde applicaties weergeven met behulp van de tekstwebservice. Deze keer maken we een krullen verzoek met behulp van de tomcattext gebruiker om te authenticeren:

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

Net als de webpagina toont het antwoord alle geïmplementeerde applicaties met hun huidige status en het aantal actieve sessies. We kunnen bijvoorbeeld de manager applicatie draait en heeft één actieve sessie:

OK - Vermelde applicaties voor virtuele host [localhost] /: running: 0: ROOT / voorbeelden: running: 0: voorbeelden / host-manager: running: 0: host-manager / manager: running: 1: manager / docs: running: 0: docs

5. Toepassingen beheren

Een van de belangrijkste onderdelen van de functionaliteit die de Tomcat Manager-app ons in staat stelt, is het stoppen, starten en opnieuw laden van applicaties.

5.1. Met behulp van het web

In het geval van de webapplicatie is het stoppen en starten van de applicaties een kwestie van klikken op de knoppen op de webpagina. Het resultaat en eventuele problemen worden vermeld in het berichtveld bovenaan de pagina.

5.2. Met behulp van de sms-service

Evenzo kunnen we applicaties stoppen en starten met behulp van de sms-service. Laten we stoppen en dan het voorbeelden applicatie met behulp van een krullen verzoek:

curl -u tomcattext: baeldung // localhost: 8080 / manager / text / stop? path = / voorbeelden OK - Gestopt toepassing op contextpad [/ voorbeelden]
curl -u tomcattext: baeldung // localhost: 8080 / manager / text / start? path = / voorbeelden OK - Toepassing gestart op contextpad [/ voorbeelden]

De pad queryparameter geeft aan welke applicatie moet worden beheerd en moet overeenkomen met het contextpad van de applicatie.

We kunnen ook applicaties opnieuw laden om wijzigingen in klassen of bronnen op te halen. Dit werkt echter alleen voor applicaties die zijn uitgepakt in een directory en niet zijn geïmplementeerd als WAR-bestanden.

Hier is een voorbeeld van hoe we het documenten applicatie met behulp van de sms-service:

curl -u tomcattext: baeldung // localhost: 8080 / manager / text / reload? path = / docs OK - Applicatie opnieuw geladen op contextpad [/ docs]

Onthoud echter dat we alleen op de herlaadknop hoeven te klikken om hetzelfde te bereiken in de webtoepassing.

6. Aflopende sessies

Naast het beheren van applicaties kunnen we dat ook gebruikerssessies beheren. De Tomcat Manager-app toont details over huidige gebruikerssessies en stelt ons in staat om sessies handmatig te laten verlopen.

6.1. Via de webinterface

We kunnen huidige gebruikerssessies bekijken door de link in het Sessies kolom voor alle vermelde toepassingen.

In het onderstaande voorbeeld kunnen we zien dat er twee gebruikerssessies zijn voor het manager toepassing. Het toont de duur van de sessie, hoe lang deze inactief is geweest en hoe lang het duurt voordat deze verloopt (standaard 30 minuten).

We kunnen sessies ook handmatig vernietigen door ze te selecteren en te kiezen Maak geselecteerde sessies ongeldig:

Op de startpagina is er een knop om Verlopen sessies. Hierdoor worden ook sessies vernietigd die gedurende de opgegeven periode van minuten inactief zijn geweest.

6.2. Via de Text Web Service

Nogmaals, de equivalenten van de tekstservice zijn eenvoudig.

Om details over huidige gebruikerssessies te bekijken, bellen we de sessie eindpunt met het contextpad van de applicatie waarin we geïnteresseerd zijn. In dit voorbeeld kunnen we zien dat er momenteel twee sessies zijn voor de manager toepassing:

curl -u tomcattext: baeldung "// localhost: 8080 / manager / text / sessies? path = / manager" OK - Sessie-informatie voor applicatie op contextpad [/ manager] Standaard maximale inactieve sessie-interval is [30] minuten Inactief voor [ 2 - <3] minuten: [1] sessies [13 - <14] minuten inactief: [1] sessies

Als we inactieve gebruikerssessies willen vernietigen, gebruiken we de verlopen eindpunt. In dit voorbeeld verlopen sessies die langer dan 10 minuten inactief zijn geweest voor de manager toepassing:

curl -u tomcattext: baeldung "// localhost: 8080 / manager / text / expire? path = / manager & idle = 10" OK - Sessie-informatie voor applicatie op contextpad [/ manager] Standaard maximale inactieve sessie-interval is [30] minuten Inactief voor [5 - <6] minuten: [1] sessies [15 - 10] minuten inactief: [1] sessies zijn verlopen

7. Toepassingen implementeren

Nu we hebben gezien hoe we onze applicaties kunnen beheren, gaan we kijken hoe we nieuwe applicaties kunnen inzetten.

Download om te beginnen het Tomcat-voorbeeld WAR, zodat we een nieuwe applicatie kunnen implementeren.

7.1. Met behulp van het web

Nu hebben we een paar opties om ons nieuwe voorbeeld van WAR te implementeren met behulp van de webpagina. De gemakkelijkste methode is om upload het WAR-voorbeeldbestand en implementeer het:

De WAR wordt ingezet met een contextpad dat overeenkomt met de naam van de WAR. Als dit lukt, wordt de voorbeeldtoepassing geïmplementeerd, gestart en weergegeven in de lijst met toepassingen. Als we het /monster link in het contextpad, kunnen we onze actieve voorbeeldtoepassing bekijken:

Zodat we dezelfde applicatie opnieuw kunnen implementeren, laten we op het Ongedaan maken knop. Zoals de naam suggereert, zal dit gebeuren de implementatie van de toepassing ongedaan maken. Merk op dat hiermee ook alle bestanden en mappen voor de geïmplementeerde applicatie worden verwijderd.

Vervolgens kunnen we implementeer het WAR-voorbeeldbestand door het bestandspad op te geven. We specificeren het bestandspad URI naar het WAR-bestand of de uitgepakte map plus het contextpad. In ons geval bevindt het voorbeeld WAR zich in de / tmp directory, en we stellen het contextpad in naar /monster:

Als alternatief kunnen we de bestandspad naar een XML-implementatiedescriptor. Met deze aanpak kunnen we aanvullende attributen specificeren die van invloed zijn op hoe de applicatie wordt geïmplementeerd en uitgevoerd. In het onderstaande voorbeeld implementeren we de WAR-voorbeeldtoepassing en maken we deze herlaadbaar.

Let daar op elk pad dat is opgegeven in de implementatiedescriptor, wordt genegeerd. Het contextpad wordt ontleend aan de bestandsnaam van de implementatiedescriptor. Bekijk de algemene kenmerken om te begrijpen waarom, evenals een beschrijving van alle andere mogelijke kenmerken:

7.2. Met behulp van de sms-service

Laten we nu eens kijken naar het implementeren van applicaties met behulp van de tekstservice.

Laten we eerst verwijder onze voorbeeldtoepassing:

curl -u tomcattext: baeldung "// localhost: 8080 / manager / text / undeploy? path = / sample" OK - Niet-geïmplementeerde applicatie op contextpad [/ sample]

Naar zet het opnieuw in, specificeren we het contextpad en de locatie-URI van het WAR-voorbeeldbestand:

curl -u tomcattext: baeldung "//localhost:8080/manager/text/deploy?path=/sample&war=file:/tmp/sample.war" OK - Toepassing op contextpad [/ sample] geïmplementeerd

Bovendien kunnen we ook een applicatie implementeren met behulp van de XML-implementatiedescriptor:

curl -u tomcattext: baeldung "//localhost:8080/manager/text/deploy?config=file:/tmp/sample.xml" OK - Toepassing op contextpad [/ sample] geïmplementeerd

8. SSL-configuratie bekijken

We moeten schakel SSL in Tomcat in voordat we een SSL-configuratie kunnen zien. Laten we eerst een nieuw Keystore-certificaat maken met een zelfondertekend certificaat in onze Tomcat's conf directory:

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

Vervolgens veranderen we de conf / tomcat-server.xml bestand om de SSL-connector in Tomcat in te schakelen:

Zodra we Tomcat opnieuw opstarten, zien we dat het veilig werkt op poort 8443!

8.1. Met behulp van het web

Laten we // localhost: 8443 / manager / html openen om de Tomcat Manager-app opnieuw te zien. Het moet er precies hetzelfde uitzien.

We kunnen nu onze SSL-configuratie bekijken met de onderstaande knoppen Diagnostiek:

  • De Cijfers knop toont alle SSL-codes die Tomcat begrijpt
  • Vervolgens de Certificaten knop toont details van ons zelfondertekende certificaat
  • eindelijk, de Vertrouwde certificaten knop toont vertrouwde CA-certificaatdetails; in ons voorbeeld toont het niets interessants omdat we geen vertrouwde CA-certificaten hebben toegevoegd

Bovendien kunnen de SSL-configuratiebestanden op elk moment dynamisch opnieuw worden geladen. We kunnen per virtuele host opnieuw laden door de hostnaam in te voeren. Anders wordt alle configuratie opnieuw gelezen:

8.2. Met behulp van de sms-service

Evenzo kunnen we dezelfde informatie krijgen met behulp van de sms-service. We kunnen alles bekijken:

  • SSL-codes met behulp van de sslConnectorCiphers bron:
curl -ku tomcattext: baeldung "// localhost: 8443 / manager / text / sslConnectorCiphers"
  • Certificaten die de sslConnectorCerts bron:
curl -ku tomcattext: baeldung "// localhost: 8443 / manager / text / sslConnectorCerts"
  • Vertrouwde certificaten die de sslConnectorTrustedCerts bron:
curl -ku tomcattext: baeldung "// localhost: 8443 / manager / text / sslConnectorTrustedCerts"

Het SSL configuratie kan opnieuw worden geladen gebruik makend van:

curl -ku tomcattext: baeldung "// localhost: 8443 / manager / text / sslReload" OK - TLS-configuratie opnieuw geladen voor alle virtuele TLS-hosts 

Merk op -k optie in de krullen commando omdat we een zelfondertekend certificaat gebruiken.

9. De serverstatus bekijken

De Tomcat Manager-app toont ons ook het status van de server en de ingezette applicaties. Deze pagina's zijn vooral handig als we algemene gebruiksstatistieken willen bekijken.

Als we het Server Status link, weergegeven in de rechterbovenhoek, zien we details op de server. De Volledige serverstatus link toont aanvullende details over de applicaties:

Er is geen bijbehorende sms-service. We kunnen het Server Status link om de serverstatus in XML te bekijken. Helaas doet u hetzelfde voor de Volledige serverstatus link kan wel of niet werken, afhankelijk van welke Tomcat-versie we gebruiken.

10. Configuratie opslaan

De sms-service stelt ons in staat om de huidige configuratie op de Tomcat op te slaan conf / server.xml. Dit is erg handig als we de configuratie hebben gewijzigd en deze willen bewaren voor later gebruik.

Gelukkig maakt dit ook een back-up van de vorige conf / server.xml, hoewel eerdere opmerkingen kunnen worden verwijderd in het nieuwe conf / server.xml configuratiebestand.

Voordat we dit kunnen doen, moeten we echter een nieuwe luisteraar toevoegen. Bewerk het conf / server.xml en voeg het volgende toe aan het einde van de lijst met bestaande luisteraars:

Nadat we Tomcat opnieuw hebben opgestart, kunnen we onze configuratie opslaan met:

curl -u tomcattext: baeldung "// localhost: 8080 / manager / text / save" OK - Serverconfiguratie opgeslagen

11. Diagnostiek

Laten we ten slotte eens kijken naar aanvullende diagnostische functies die worden geboden door de Tomcat Manager-app.

11.1. Thread Dump

We kunnen de sms-service gebruiken om een thread dump van de draaiende Tomcat-server:

curl -u tomcattext: baeldung "// localhost: 8080 / manager / text / threaddump" OK - JVM-threaddump 2019-10-06 23:19: 10.066 Volledige thread-dump Java HotSpot (TM) 64-bits server VM (11.0. 3 + 12-LTS gemengde modus): ...

Dit is met name handig wanneer we threads moeten analyseren of vinden die prestatieproblemen veroorzaken, zoals langlopende of vastgelopen threads.

11.2. Geheugenlekken opsporen

Tomcat doet over het algemeen goed werk om geheugenlekken te voorkomen. Maar als we een geheugenlek vermoeden, heeft de Tomcat Manager-app een geheugenlekdetectieservice om ons te helpen. Het voert een volledige garbage collection uit en detecteert alle klassen die nog in het geheugen aanwezig zijn sinds de laatste keer dat de applicatie opnieuw werd geladen.

We hoeven alleen het Vind lekken knop op de webpagina om lekken te detecteren.

Evenzo kan de tekstservice geheugenlekdetectie uitvoeren:

curl -u tomcattext: baeldung "// localhost: 8080 / manager / text / findleaks? statusLine = true" OK - Geen geheugenlekken gevonden

11.3. Beschikbare bronnen weergeven

De sms-service biedt een lijst met beschikbare bronnen. In dit voorbeeld zien we dat we één in-memory database beschikbaar hebben:

curl -u tomcattext: baeldung "// localhost: 8080 / manager / text / resources" OK - Lijst van alle soorten globale bronnen UserDatabase: org.apache.catalina.users.MemoryUserDatabase

12. Conclusie

In dit artikel hebben we de Tomcat Manager-app uitgebreid bekeken. We zijn begonnen met het installeren van de applicatie en kijken hoe we toegang kunnen verlenen door machtigingen te configureren voor twee verschillende gebruikers.

Vervolgens hebben we verschillende voorbeelden onderzocht met behulp van de webgebaseerde applicatie en de tekstgebaseerde webservice. We hebben gezien hoe we applicaties op verschillende manieren konden bekijken, beheren en implementeren. Vervolgens hebben we gekeken hoe u de configuratie en status van de server kunt bekijken.

Raadpleeg de online documentatie voor meer informatie over de Tomcat Manager-app.