Wat is Tomcat? De originele Java-servletcontainer

Apache Tomcat is een open source Java-servletcontainer met een lange levensduur die verschillende essentiële Java-bedrijfsspecificaties implementeert, namelijk de Java Servlet, JavaServer Pages (JSP) en WebSockets API's.

Tomcat, een Apache Software Foundation-project, werd voor het eerst uitgebracht in 1998, slechts vier jaar na Java zelf. Tomcat begon als een referentie-implementatie voor de eerste Java Servlet API en de JSP-specificatie. Hoewel het niet langer de referentie-implementatie is voor een van deze technologieën, blijft Tomcat de meest gebruikte Java-server, met een goed geteste en bewezen core-engine met goede uitbreidbaarheid.

In deze korte inleiding leert u waarom veel softwarewinkels Tomcat kiezen voor het uitvoeren van Java-webapps. Je krijgt een overzicht van Tomcat en hoe het wordt gebruikt, evenals installatie-instructies voor de meest recente versie op het moment van schrijven.

Tomcat en de Java Servlet API

Tomcat 9 ondersteunt de Servlet 4.0-specificatie en vereist JDK 8 of hoger. Tomcat 8.5 ondersteunt verschillende nieuwere functies zoals HTTP / 2, maar blijft een Servlet 3-container.

Wat voor soort server is Tomcat?

Het Java-ecosysteem ondersteunt verschillende soorten applicatieservers, dus laten we ze ondubbelzinnig maken en kijken waar Tomcat in past:

  • Een servletcontainer is een implementatie van de Java Servlet-specificatie, die voornamelijk wordt gebruikt voor het hosten van Java-servlets.
  • Een webserver is een server die is ontworpen om bestanden van het lokale systeem te leveren, zoals Apache.
  • Een Java-bedrijfsapplicatieserver is een volledige implementatie van de Java EE (nu Jakarta EE) -specificatie.

Tomcat is in wezen een servlet en JSP-container. Een Java-servlet kapselt code en bedrijfslogica in en definieert hoe verzoeken en antwoorden op een Java-server moeten worden afgehandeld. JSP is een weergavetechnologie aan de serverzijde. Als ontwikkelaar schrijf je de servlet of JSP-pagina en laat je Tomcat de routering afhandelen.

Tomcat bevat ook de Coyote-engine, wat een webserver is. Dankzij Coyote is het mogelijk om Tomcat uit te breiden met een verscheidenheid aan Java-bedrijfsspecificaties en -mogelijkheden, waaronder de Java Persistence API (JPA). Tomcat heeft ook een uitgebreide versie, TomEE genaamd, die meer zakelijke functies bevat. Ik zal TomEE later in dit artikel kort introduceren.

Laten we beginnen met het gebruik van Tomcat om servlets en JSP's te hosten.

Download en installeer Tomcat

Omdat het een grijze oudheid van de softwarewereld is, zijn er een aantal Tomcat-versies beschikbaar. Informatie over versieverschillen is beschikbaar op de Tomcat-homepage. U kunt meestal gewoon de laatste stabiele versie kiezen.

Download voor onze doeleinden de nieuwste versie van Tomcat, momenteel Tomcat 9. Je hebt de keuze om Tomcat te downloaden als archief ( .zipof tar.gz), of als een geïnstalleerde service. De beste keuze is aan jou - tenzij je natuurlijk niet op Windows draait, in dat geval ga je voor het archief. We gebruiken het archief voor dit artikel.

Windows-installatie voor Tomcat

Als u Windows gebruikt en het installatieprogramma wilt gebruiken, downloadt u eenvoudig het .exe-bestand en voert u het uit. Tomcat zal zichzelf installeren als een service met redelijke standaardinstellingen. Het zal u dan laten weten waar de installatie is, en u kunt doorgaan alsof u het archief daar had uitgepakt.

Stap 1. Installatie via de opdrachtregel

Ga naar de opdrachtregel en typ gunzip apache-tomcat-9.0.19.tar.gzgevolgd door tar -xf apache-tomcat-9.0.19.tar. Dit creëert de volgende mappen:

  • / bin bevat de scripts voor het uitvoeren van Tomcat.
  • / webapps is de locatie waar u uw apps gaat implementeren.
  • / logs is waar Tomcat zijn logboeken uitvoert. Merk op dat de logboeken van Tomcat /logs/catalina.outstandaard worden geopend. U kunt dit bestand gebruiken om problemen op te sporen in combinatie met app-specifieke logboekbestanden.
  • / lib is waar Tomcat naar JAR's zoekt. Hier bewaar je extra pakketten die niet bij Tomcat zijn inbegrepen, zoals JPA.
  • / conf is de configuratie-XML voor Tomcat, waar u dingen kunt doen zoals het toevoegen van gebruikers en rollen voor Tomcat.

Stap 2. Start Tomcat

Als u Tomcat als een service hebt geïnstalleerd, is deze al actief. Ga anders door en start het op door ./catalina.sh startop de opdrachtregel in te voeren. (Typ ./catalina.shzonder argumenten om alle beschikbare opdrachten te zien). Nu zou je in een browser naar het welkomstscherm van Tomcat moeten kunnen bladeren.

Matthew Tyson

Applicaties implementeren in Tomcat

In de webappsdirectory van Tomcat implementeert u een applicatie. Je kunt daar een .warbestand neerzetten en Tomcat zal het uitvoeren. Een WAR-bestand is de standaardverpakking voor een webtoepassingsresource: een JAR-bestand met enkele aanvullende bestanden die de container (in dit geval Tomcat) vertellen hoe deze moet worden uitgevoerd.

Afgezien van de standaard verpakking, zijn er drie extra manieren om inhoud in Tomcat te implementeren.

Ontplofte inzet

Een "geëxplodeerde" webapp is een applicatie die niet is gecomprimeerd tot een WAR-bestand, wat betekent dat deze nog steeds alle elementen bevat die in mappen en bestanden zijn ingedeeld. Het Tomcat-archief dat je hebt uitgepakt, is verzonden met verschillende voorbeelden die op deze manier zijn geïmplementeerd, die je in de /webapps/examplesdirectory kunt vinden. Het voordeel van een geëxplodeerde implementatie is dat u de bestanden daar kunt bekijken zonder u zorgen te maken over compressie.

Als u naar navigeert //localhost:8080/examples/, vindt u een lijst met links. Deze pagina wordt weergegeven door Tomcat vanuit het /webapps/examples/index.htmlbestand. Tomcat levert een HTML-bestand vanuit het bestandssysteem, een instantie van de Coyote-engine van Tomcat die als een webserver fungeert.

U bent vrij om de gepresenteerde voorbeelden te verkennen - ze geven u een goed overzicht van de mogelijkheden van Tomcat voor het bedienen van servlets, JSP's en WebSockets.

Tomcat bevat standaard ook een beheer-app, te vinden onder het /managerpad. Met deze app kun je onder andere apps starten, stoppen en opnieuw implementeren vanaf een webconsole.

Serveert statische inhoud

Het is mogelijk om bestanden uit het bestandssysteem te serveren, of door te sturen van Tomcat naar een andere HTTP-server zoals Apache. Een andere veel voorkomende setup is om een ​​bestandsserver zoals Apache of Nginx voor Tomcat te plaatsen en vervolgens uw API-verzoeken door te sturen naar Tomcat. In deze gevallen wordt de mod_JK-bibliotheek gebruikt om Tomcat en Apache (of zelfs een andere webserver zoals IIS) te configureren om te communiceren.

Voor verbeterde prestaties, voornamelijk bij het leveren van statische inhoud, biedt Tomcat ook native wrappers voor Windows en Linux. Dit staat bekend als Tomcat APR en hier is meer informatie beschikbaar. Deze zijn niet nodig voor typische gebruikssituaties, maar goed om te weten.

Ingebouwde Tomcat

Jetty was lange tijd de enige server die als embedded server kon draaien. Dat is veranderd, en nu kan Tomcat ook embedded draaien. Het idee bij het gebruik van een embedded server is dat in plaats van de server met de applicatiebestanden, zoals je tot nu toe hebt gezien, je een applicatie hebt met een hoofdklasse (dat wil zeggen, een zelfstandige Java-app), die de servermogelijkheden van binnen de codebasis. Over het algemeen biedt dit een eenvoudiger en draagbaarder ontwikkelingsmodel en is het snel de norm geworden. Spring Boot gebruikt bijvoorbeeld een ingesloten Tomcat-instantie die in dev-modus wordt uitgevoerd.

Het runnen van een embedded server zorgt voor eenvoud in termen van bewerkingen, aangezien u nu te maken hebt met slechts één component (de app) in plaats van zowel de app als een serverimplementatie. Aan de andere kant is de setup waarbij Tomcat als een onafhankelijke host draait nog steeds heel gebruikelijk.

TomEE

Het is mogelijk om meer van de standaard Java EE (of Jakarta EE) -mogelijkheden te gebruiken met Tomcat door die bibliotheken toe te voegen aan Tomcat zelf, of aan uw toepassingsafhankelijkheden. Een andere optie is de TomEE-server. TomEE is dezelfde Tomcat-engine met aanvullende ondersteuning voor Java-ondernemingen, waaronder de populaire JPA- en CDI-API's (Contexts and Dependency Injection). De specificatie van TomEE is gebaseerd op het Java EE-webprofiel, dus het geeft je meer dan Tomcat, maar het is geen volledige Java EE-app-server zoals WildFly of Glassfish.

Hoge beschikbaarheid en clustering

Tomcat ondersteunt hoge beschikbaarheid en clustering. Hoge beschikbaarheid is in wezen de mogelijkheid om over te stappen naar een ander exemplaar van de server en de sessie opnieuw te maken alsof er niets mis is gegaan. Clustering is de mogelijkheid om meerdere versies van dezelfde server te maken om grote hoeveelheden verkeer te verwerken.

Conclusie

Tomcat blijft actief ontwikkeld, houdt gelijke tred met veranderingen en levert een solide en betrouwbaar platform voor het implementeren van webapps. Zowel de aanhoudende populariteit als de keuze als het standaard Java-platform voor veel PaaS-systemen getuigen van het aanhoudende succes.

Dit verhaal, "Wat is Tomcat? De originele Java-servletcontainer" is oorspronkelijk gepubliceerd door JavaWorld.