Was ist Tomcat? Der ursprüngliche Java-Servlet-Container

Apache Tomcat ist ein langlebiger Open-Source-Java-Servlet-Container, der mehrere grundlegende Java-Unternehmensspezifikationen implementiert, nämlich die APIs Java Servlet, JavaServer Pages (JSP) und WebSockets.

Tomcat, ein Projekt der Apache Software Foundation, wurde 1998 erstmals veröffentlicht, nur vier Jahre nach Java. Tomcat wurde als Referenzimplementierung für die erste Java-Servlet-API und die JSP-Spezifikation gestartet. Tomcat ist zwar nicht mehr die Referenzimplementierung für eine dieser Technologien, bleibt jedoch der am häufigsten verwendete Java-Server und verfügt über eine bewährte und bewährte Core-Engine mit guter Erweiterbarkeit.

In dieser kurzen Einführung erfahren Sie, warum sich viele Software-Shops für Tomcat entscheiden, um Java-Webanwendungen auszuführen. Sie erhalten einen Überblick über Tomcat und seine Verwendung sowie Installationsanweisungen für die aktuellste Version zum Zeitpunkt dieser Veröffentlichung.

Tomcat und die Java Servlet API

Tomcat 9 unterstützt die Servlet 4.0-Spezifikation und erfordert JDK 8 oder höher. Tomcat 8.5 unterstützt mehrere neuere Funktionen wie HTTP / 2, bleibt jedoch ein Servlet 3-Container.

Was für ein Server ist Tomcat?

Das Java-Ökosystem unterstützt verschiedene Arten von Anwendungsservern. Lassen Sie uns diese also eindeutig unterscheiden und sehen, wo Tomcat hineinpasst:

  • Ein Servlet-Container ist eine Implementierung der Java-Servlet-Spezifikation, die hauptsächlich zum Hosten von Java-Servlets verwendet wird.
  • Ein Webserver ist ein Server, der Dateien aus dem lokalen System wie Apache bereitstellt.
  • Ein Java Enterprise Application Server ist eine vollständige Implementierung der Java EE-Spezifikation (jetzt Jakarta EE).

Im Kern ist Tomcat ein Servlet- und JSP-Container. Ein Java-Servlet kapselt Code und Geschäftslogik und definiert, wie Anforderungen und Antworten auf einem Java-Server behandelt werden sollen. JSP ist eine serverseitige Rendering-Technologie für Ansichten. Als Entwickler schreiben Sie das Servlet oder die JSP-Seite und lassen dann Tomcat das Routing übernehmen.

Tomcat enthält auch die Coyote-Engine, bei der es sich um einen Webserver handelt. Dank Coyote ist es möglich, Tomcat um eine Vielzahl von Java-Unternehmensspezifikationen und -funktionen zu erweitern, einschließlich der Java Persistence API (JPA). Tomcat hat auch eine erweiterte Version namens TomEE, die mehr Unternehmensfunktionen enthält. Ich werde TomEE später in diesem Artikel kurz vorstellen.

Beginnen wir mit einem Blick auf die Verwendung von Tomcat zum Hosten von Servlets und JSPs.

Laden Sie Tomcat herunter und installieren Sie es

Da es sich um eine alte Software handelt, stehen eine Reihe von Tomcat-Versionen zur Verfügung. Informationen zu Versionsunterschieden finden Sie auf der Tomcat-Homepage. Normalerweise können Sie einfach die neueste stabile Version auswählen.

Laden Sie für unsere Zwecke die neueste Version von Tomcat herunter, derzeit Tomcat 9. Sie haben die Wahl, Tomcat als Archiv ( .zipoder tar.gz) oder als installierten Dienst herunterzuladen . Die beste Wahl liegt bei Ihnen - es sei denn, Sie laufen nicht unter Windows. In diesem Fall greifen Sie zum Archiv. Wir werden das Archiv für diesen Artikel verwenden.

Windows-Installation für Tomcat

Wenn Sie Windows ausführen und das Installationsprogramm verwenden möchten, laden Sie einfach die EXE-Datei herunter und führen Sie sie aus. Tomcat installiert sich selbst als Dienst mit angemessenen Standardeinstellungen. Sie werden dann darüber informiert, wo sich die Installation befindet, und Sie können fortfahren, als hätten Sie das Archiv dort entpackt.

Schritt 1. Befehlszeileninstallation

Gehen Sie zur Befehlszeile und geben Sie gunzip apache-tomcat-9.0.19.tar.gzgefolgt von ein tar -xf apache-tomcat-9.0.19.tar. Dadurch werden die folgenden Verzeichnisse erstellt:

  • / bin enthält die Skripte zur Ausführung von Tomcat.
  • / webapps ist der Speicherort, an dem Sie Ihre Apps bereitstellen.
  • In / logs gibt Tomcat seine Protokolle aus. Beachten Sie, dass die Protokolle /logs/catalina.outvon Tomcat standardmäßig verwendet werden. Mit dieser Datei können Sie Probleme in Verbindung mit app-spezifischen Protokolldateien debuggen.
  • In / lib sucht Tomcat nach JARs. Hier speichern Sie zusätzliche Pakete, die nicht in Tomcat enthalten sind, z. B. JPA.
  • / conf ist das Konfigurations-XML für Tomcat, in dem Sie beispielsweise Benutzer und Rollen für Tomcat hinzufügen können.

Schritt 2. Starten Sie Tomcat

Wenn Sie Tomcat als Dienst installiert haben, wird es bereits ausgeführt. Andernfalls starten Sie es, indem Sie es ./catalina.sh startüber die Befehlszeile eingeben. (Geben Sie ./catalina.shohne Argumente ein, um alle verfügbaren Befehle anzuzeigen.) Jetzt sollten Sie in einem Browser zum Begrüßungsbildschirm von Tomcat navigieren können.

Matthew Tyson

Bereitstellen von Anwendungen in Tomcat

Im Tomcat- webappsVerzeichnis stellen Sie eine Anwendung bereit. Sie können dort eine .warDatei ablegen, die von Tomcat ausgeführt wird. Eine WAR-Datei ist die Standardverpackung für eine Webanwendungsressource: eine JAR-Datei mit einigen zusätzlichen Dateien, die dem Container (in diesem Fall Tomcat) mitteilen, wie er ausgeführt werden soll.

Neben der Standardverpackung gibt es drei zusätzliche Möglichkeiten, Inhalte in Tomcat bereitzustellen.

Explosionsbereitstellung

Eine "explodierte" Webanwendung ist eine Anwendung, die nicht in eine WAR-Datei komprimiert ist. Dies bedeutet, dass sie weiterhin alle Elemente enthält, die in Verzeichnissen und Dateien angeordnet sind. Das von Ihnen entpackte Tomcat-Archiv wurde mit mehreren auf diese Weise bereitgestellten Beispielen ausgeliefert, die Sie im /webapps/examplesVerzeichnis finden. Der Vorteil einer explodierten Bereitstellung besteht darin, dass Sie die Dateien dort anzeigen können, ohne sich um die Komprimierung kümmern zu müssen.

Wenn Sie zu navigieren //localhost:8080/examples/, finden Sie eine Liste mit Links. Diese Seite wird von Tomcat aus der /webapps/examples/index.htmlDatei gerendert . Tomcat stellt eine HTML-Datei aus dem Dateisystem bereit, bei dem es sich um eine Instanz der Coyote-Engine von Tomcat handelt, die als Webserver fungiert.

Sie können die vorgestellten Beispiele erkunden. Sie geben Ihnen einen guten Überblick über die Funktionen von Tomcat zum Bereitstellen von Servlets, JSPs und WebSockets.

Tomcat enthält standardmäßig auch eine Verwaltungs-App, die sich unter dem /managerPfad befindet. Mit dieser App können Sie unter anderem Apps über eine Webkonsole starten, stoppen und erneut bereitstellen.

Statischen Inhalt bereitstellen

Es ist möglich, Dateien aus dem Dateisystem bereitzustellen oder von Tomcat an einen anderen HTTP-Server wie Apache weiterzuleiten. Ein weiteres gängiges Setup besteht darin, einen Dateiserver wie Apache oder Nginx vor Tomcat zu stellen und dann Ihre API-Anforderungen an Tomcat weiterzuleiten. In diesen Fällen wird die Bibliothek mod_JK verwendet, um Tomcat und Apache (oder sogar einen anderen Webserver wie IIS) für die Kommunikation zu konfigurieren.

Für eine verbesserte Leistung, vor allem bei der Bereitstellung statischer Inhalte, bietet Tomcat auch native Wrapper für Windows und Linux an. Dies ist als Tomcat APR bekannt. Weitere Informationen finden Sie hier. Diese sind für typische Anwendungsfälle nicht erforderlich, aber gut zu wissen.

Eingebetteter Kater

Jetty war lange Zeit der einzige Server, der als eingebetteter Server ausgeführt werden konnte. Das hat sich geändert, und jetzt kann Tomcat auch eingebettet ausgeführt werden. Die Idee bei der Verwendung eines eingebetteten Servers ist, dass Sie anstelle des Servers, der die Anwendungsdateien enthält, wie Sie bisher gesehen haben, eine Anwendung mit einer Hauptklasse (dh einer eigenständigen Java-App) haben, von der aus die Serverfunktionen aufgerufen werden innerhalb seiner Codebasis. Insgesamt bietet dies ein einfacheres und tragbareres Entwicklungsmodell und ist schnell zur Norm geworden. Spring Boot verwendet beispielsweise eine eingebettete Tomcat-Instanz, die im Entwicklungsmodus ausgeführt wird.

Das Ausführen eines eingebetteten Servers kann die Bedienung vereinfachen, da Sie sich jetzt nur noch mit einer einzelnen Komponente (der App) befassen, anstatt sowohl mit der App als auch mit einer Serverbereitstellung. Andererseits ist das Setup, bei dem Tomcat als unabhängiger Host ausgeführt wird, immer noch sehr verbreitet.

TomEE

Es ist möglich, mehr der Standardfunktionen von Java EE (oder Jakarta EE) mit Tomcat zu verwenden, indem Sie diese Bibliotheken zu Tomcat selbst oder zu Ihren Anwendungsabhängigkeiten hinzufügen. Eine weitere Option ist der TomEE-Server. TomEE ist dieselbe Tomcat-Engine mit zusätzlicher Java-Unternehmensunterstützung, einschließlich der beliebten JPA- und CDI-APIs (Contexts and Dependency Injection). Die Spezifikation von TomEE basiert auf dem Java EE-Webprofil. Sie bietet also mehr als Tomcat, ist jedoch kein vollwertiger Java EE-App-Server wie WildFly oder Glassfish.

Hochverfügbarkeit und Clustering

Tomcat unterstützt Hochverfügbarkeit und Clustering. Hochverfügbarkeit ist im Wesentlichen die Möglichkeit, ein Failover auf eine andere Instanz des Servers durchzuführen und die Sitzung neu zu erstellen, als wäre nichts schiefgegangen. Clustering ist die Möglichkeit, mehrere Versionen desselben Servers zu erstellen, um Datenverkehr mit hohem Datenaufkommen zu verarbeiten.

Fazit

Tomcat bleibt aktiv entwickelt, hält mit den Veränderungen Schritt und bietet eine solide und zuverlässige Plattform für die Bereitstellung von Web-Apps. Sowohl die anhaltende Beliebtheit als auch die Auswahl als Standard-Java-Plattform für viele PaaS-Systeme zeugen von seinem anhaltenden Erfolg.

Diese Geschichte "Was ist Tomcat? Der ursprüngliche Java-Servlet-Container" wurde ursprünglich von JavaWorld veröffentlicht.