Der Container von Tomcat wird zum Laden des Servlets verwendet. Wie ist also der Servlet-Container von Tomcat konzipiert? Containerhierarchie Tomcat hat vier Container entwickelt: Engine, Host, Context und Wrapper Durch diese Schichtung macht Tomcat den Servlet-Container sehr flexibel.
Beachten Sie die Konfigurationsdatei server.xml von Tomcat. Tomcat verwendet ein komponentenbasiertes Design, wobei die äußerste Schicht der Server ist Diese Container haben eine Eltern-Kind-Beziehung und bilden eine Baumstruktur. Tomcat verwendet einen zusammengesetzten Modus, um diese Container zu verwalten. Alle Containerkomponenten implementieren die Containerschnittstelle, sodass der Composite-Modus es Benutzern ermöglicht, Der Wrapper auf unterster Ebene eines einzelnen Containerobjekts Kontext, Host oder Engine für das zusammengesetzte Containerobjekt Container-Schnittstellendefinition: öffentliche Schnittstelle Container erweitert Lebenszyklus { öffentliche void setName(String name); öffentlicher Container getParent(); öffentliche void setParent(Container Container); öffentliche void addChild(Container-Unterelement); öffentliche void removeChild(Container-Unterelement); öffentlicher Container findChild(Stringname); } Der Prozess der Anforderung zur Lokalisierung des Servlets Wie ermittelt Tomcat bei so vielen Containerebenen, welches Servlet in welchem Wrapper-Container die Anforderung verarbeitet? Mapper lokalisiert die vom Benutzer angeforderte URL zu einem Servlet So funktioniert esDie Mapper-Komponente speichert die Konfigurationsinformationen der Webanwendung: die Zuordnungsbeziehung zwischen der Containerkomponente und dem Zugriffspfad, wie z. B.
Diese Konfigurationsinformationen stellen eine mehrstufige Karte dar. Wenn eine Anforderung eingeht, kann die Mapper-Komponente ein Servlet lokalisieren, indem sie den Domänennamen und den Pfad in der Anforderungs-URL analysiert und dann in der gespeicherten Map sucht. Wenn es ein Online-Shopping-System gibt,
Die beiden Systeme laufen auf demselben Tomcat. Um ihre Zugriffsdomänennamen zu isolieren, werden zwei virtuelle Domänennamen konfiguriert: verwalten.shopping.com benutzer.shopping.com Bei dieser Bereitstellung erstellt Tomcat eine Servicekomponente und eine Engine-Containerkomponente, zwei Host-Untercontainer unter dem Engine-Container und zwei Context-Untercontainer unter jedem Host-Container. Da eine Webanwendung normalerweise über mehrere Servlets verfügt, erstellt Tomcat in jedem Kontextcontainer auch mehrere Wrapper-Untercontainer. Jeder Container hat einen entsprechenden Zugriffspfad Wie findet Tomcat eine URL zu einem Servlet? Wählen Sie zunächst Service und Engine entsprechend dem Protokoll und der Portnummer aus. Wählen Sie den Host basierend auf dem Domänennamen aus. Suchen Sie die Kontextkomponente anhand des URL-Pfads Suchen Sie schließlich den Wrapper (Servlet) basierend auf dem URL-Pfad Servlets sind nicht die einzigen, die Anfragen verarbeiten. Übergeordnete und untergeordnete Container im Suchpfad verarbeiten ebenfalls die Anfragen:
Dieser Aufrufprozess verwendet die Pipeline-Valve-Pipeline und das Verantwortungskettenmodell. Während eines Anforderungsverarbeitungsprozesses verarbeiten viele Handler die Anforderung nacheinander. Jeder Handler ist für seine eigene Verarbeitung verantwortlich. Nach der Verarbeitung wird der nächste Handler aufgerufen, um die Verarbeitung fortzusetzen. Valve stellt einen Verarbeitungspunkt dar, beispielsweise für die Berechtigungsauthentifizierung und Protokollierung. öffentliche Schnittstelle Valve { öffentliches Valve getNext(); öffentliche void setNext(Ventil Ventil); public void invoke (Anfrage Anfrage, Antwort Antwort) } Da Valve ein Verarbeitungspunkt ist, wird die Invoke-Methode zum Verarbeiten der Anforderung verwendet. öffentliche Schnittstelle Pipeline erweitert Contained { öffentliche void addValve(Ventil Ventil); öffentliches Valve getBasic(); öffentliche void setBasic(Ventil Ventil); öffentliches Valve getFirst(); } Daher wird in der Pipeline eine verknüpfte Ventilliste verwaltet und das Ventil kann in die Pipeline eingefügt werden. Jeder Container hat ein Pipeline-Objekt. Sobald das erste Ventil der Pipeline ausgelöst wird, werden alle Ventile in der Pipeline dieses Containers aufgerufen. Aber wie kann man Pipelines verschiedener Container verketten? Der gesamte Aufrufvorgang wird durch den Adapter im Connector ausgelöst, der das erste Ventil der Engine aufruft:
Das letzte Ventil des Containers erstellt eine Filterkette und ruft die Methode doFilter auf, die schließlich zur Servicemethode des Servlets aufgerufen wird. Was ist der Unterschied zwischen Ventil und Filter?
Dies ist das Ende dieses Artikels über das Design des Tomcat-Mehrschichtcontainers. Weitere relevante Inhalte zum Tomcat-Mehrschichtcontainer finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Kleine Details der Web-Frontend-Entwicklung
>>: So vermeiden Sie die Duplizierung von Daten beim Einfügen in einen MySql-Batch
Suchen Sie das Installationsverzeichnis von Virtu...
Durch JavaScript können wir das Springen von Hype...
Die neue offizielle Website ist online, aber die ...
1. Die Verwendung von Docker Compose ist der Verw...
Dieser Artikel basiert auf der CentOS 7.3-Systemu...
Jede Webseite hat eine Adresse, die durch eine UR...
Die Rancher-Bereitstellung kann über drei Archite...
Im Internet kursieren viele scheinbar wahre „Gerü...
Inhaltsverzeichnis Einführung Spiegel-Repository ...
1. Zwei Arten der DMA-Zuordnung 1.1. Konsistente ...
Heute habe ich gesehen, wie ein Freund im Q&A...
Konfigurieren Sie ein Implementierungsbeispiel fü...
<br />Vorheriger Artikel: Webdesign-Tutorial...
Frage: Was ist der Unterschied zwischen int(1) un...
In diesem Artikel wird der spezifische Code für J...