Eine kurze Einführung in die Gesamtstruktur von Tomcat

Eine kurze Einführung in die Gesamtstruktur von Tomcat

Tomcat ist weithin als Webcontainer bekannt. Es hat meine gesamte Programmierkarriere begleitet, von den Anfängen, Java zu lernen, bis zu meiner jetzigen Arbeit. Tomcat ist im Wesentlichen ein Servlet-Container. Ein Servlet kann Folgendes tun: Anforderungsressourcen verarbeiten und Antwortobjekte für den Client ausfüllen.

Tomcat ist verantwortlich für das Laden der von uns geschriebenen Servlet-Klasse, das Aufrufen der init()-Methode des Servlets, das Erstellen einer ServletRequest- und einer ServletResponse-Instanz für eine Anforderung, das Aufrufen der service()-Methode des Servlets, das Übergeben von ServletRequest und ServletResponse als Parameter und das Aufrufen von destroy(), um das Servlet beim Schließen zu deinstallieren. Als nächstes werde ich kurz die Gesamtstruktur von Tomcat vorstellen.

Tomcats Gesamtstruktur

Wie in der Abbildung dargestellt, sind die beiden Hauptkomponenten von Tomcat der Connector und der Container. Mehrere Konnektoren und ein Container bilden einen Dienst. Der Dienst wird verwendet, um Dienste für die Außenwelt bereitzustellen, und der Lebenszyklus des Dienstes wird vom Server gesteuert. Server gehört zur Abstraktion der obersten Ebene.

Der Connector wird verwendet, um Dinge im Zusammenhang mit Netzwerkverbindungen zu handhaben, wie Socket-Verbindungen, Anforderungskapselung, Verbindungs-Thread-Pools usw. Der Container verarbeitet hauptsächlich die vom Connector akzeptierten Anfragen. Der Service ist lediglich eine zusätzliche Schicht um Connector und Container, die diese zusammenfügt, um Dienste nach außen bereitzustellen. Ein Service kann mehrere Connectors, aber nur einen Container haben. Der Lebenszyklus aller Komponenten wird einheitlich über die Lebenszyklusschnittstelle verwaltet, die die Methoden „Init“, „Start“, „Stop“ und „Destroy“ umfasst.

Der ursprüngliche Connector konnte nur auf den BIO-Modus eingestellt werden. Jetzt ist der Standardverbindungsmodus der Tomcat-Versionen auf höherer Ebene NIO, was die Parallelität von Anforderungen erheblich verbessert.

Es gibt in Tomcat vier Containertypen (von oben nach unten): Engine, Host, Kontext und Wrapper. Ein Wrapper entspricht einem Servlet, ein Kontext entspricht einer Anwendung, ein Host entspricht einer Site und eine Engine ist eine Engine. Es gibt nur einen Container. Der Start zwischen Containern erfolgt mittels

Tomcat-Containermodell

Dies ist eine kurze Einführung in die gesamte Struktur von Tomcat. Als Nächstes werden wir unser Verständnis anhand des Verarbeitungsablaufs einer Tomcat-Anforderung vertiefen. Angenommen, die Anforderung lautet: http://localhost:8080/test/index.jsp, dann ist der Verarbeitungsablauf von Tomcat wie folgt

1. Die Anfrage wird an Port 8080 gesendet und vom Connector empfangen.

2. Der Connector übergibt die Anforderung zur Verarbeitung an die Engine seines Dienstes und wartet auf die Antwort der Engine.

3.engine erhält die Anforderungsadresse und gleicht sie mit dem virtuellen Host ab

4. Die Engine gleicht den Host mit dem Namen localhost ab, der die Anforderung /test/index.jsp empfängt, die dem Kontext entspricht, der dem Host gehört

5. Der Host gleicht den Kontext mit dem Pfad /test ab. Wenn keine Übereinstimmung gefunden wird, wird sie vom leeren Kontext verarbeitet.

6. Der Kontext ruft die Datei request/index.jsp ab und sucht in der Mapping-Datei nach dem entsprechenden Servlet

7. Der Kontext gleicht das Servlet mit dem Muster *.jsp ab und findet die entsprechende JspServlet-Klasse (Jsp wird schließlich in Servlet konvertiert).

8. Erstellen Sie httpservletrequest- und httpServletResponse-Objekte und verwenden Sie sie als Parameter, um doGet oder doPost von JspServlet aufzurufen

9.context gibt die Antwort an den Host zurück

10. Der Host gibt die Antwort an die Engine zurück

11. Die Engine gibt die Antwort an den Connector zurück

12. Der Connector gibt die Antwort an den Browser des Benutzers zurück und die Anforderung endet

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Python verwendet eine Pipeline zum Batch-Lesen und -Schreiben von Redis
  • Python: Detaillierte Erklärung zur Verwendung von Item Pipeline-Komponenten im Scrapy-Framework
  • Detaillierte Erläuterung der Verwendung von Pipeline in Java zum Lesen und Schreiben von Redis-Batches (hmset & hgetall)
  • Detaillierte Erläuterung der signifikanten Leistungsverbesserung von Redis durch Pipeline- (PipeLine) und Batch-Operationen (Batch)
  • Die benutzerdefinierte Pipeline-Klasse von Scrapy implementiert die Methode zum Speichern gesammelter Daten in MongoDB
  • Eine Lösung für den abnormalen Ausgang von Tomcat, der durch Semaphore verursacht wird
  • Detaillierte Erläuterung der Pipeline und des Ventils im Tomcat-Pipeline-Modus

<<:  Java importiert Daten aus Excel in MySQL

>>:  So zeigen Sie historische Befehle in Linux an und führen sie aus

Artikel empfehlen

HTML-Grundlagen-Zusammenfassungsempfehlung (Titel)

HTML: Titel Überschriften werden durch Tags wie &...

So ändern Sie die inländische Imagequelle für Docker

Konfigurieren Sie den Beschleuniger für den Docke...

CSS zum Erzielen von Text auf dem Hintergrundbild

Wirkung: <div Klasse="imgs"> <...

HTML Mehrere spezielle Trennlinieneffekte

1. Grundlinien 2. Spezialeffekte (die Effekte sin...

HTML+CSS zum Erzielen von Spezialeffekten durch Textfaltung – Beispiel

In diesem Artikel werden hauptsächlich Beispiele ...

So entfernen Sie „Enter“, „Senden“ und „Enter != Senden“ aus dem Formular

Um das Problem „Eingeben != Absenden“ zu implement...

So verwenden Sie CSS-Zähler, um geordnete Zahlenlisten zu verschönern

Beim Webdesign ist es sehr wichtig, eine organisi...

Detaillierte Erklärung des Unterschieds zwischen in und exists in MySQL

1. Bereiten Sie sich im Voraus vor Zu Ihrer Beque...

Mehrere magische Verwendungen des JS ES6 Spread-Operators

Inhaltsverzeichnis 1. Attribute hinzufügen 2. Meh...

So fügen Sie eindeutige Indizes für Felder in MySQL hinzu und löschen sie

1. PRIMARY KEY hinzufügen (Primärschlüsselindex) ...