Compartir tecnología

Principio, estructura y patrón de diseño de Tomcat.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1 ¿qué?

Un servidor web que ejecuta tecnología java servlet y jsp puede proporcionar un entorno de ejecución para java web y manejar solicitudes de clientes a través del protocolo http. Eso es tomcat = servidor http + contenedor de servlet. Productos similares incluyen embarcadero

  • Aplicación web : Las aplicaciones web se refieren a aplicaciones a las que se accede a través de un navegador web, que utilizan tecnologías y estándares web (como HTTP, HTML, CSS, JavaScript, etc.) para proporcionar interfaces de usuario e interactuar con los usuarios. Las aplicaciones web pueden incluir componentes de front-end y back-end. El front-end es responsable de la interfaz de usuario y la presentación, y el back-end es responsable de la lógica empresarial y el procesamiento de datos.
  • Servlet : Servlet es parte de la especificación Java EE. Es un programa Java que se ejecuta en el lado del servidor. Se utiliza para recibir solicitudes de clientes (como navegadores web), procesar estas solicitudes (incluido el acceso a bases de datos, llamar a la lógica empresarial, etc.). ) y devolver Responder al cliente. Servlet es una de las tecnologías centrales para crear contenido web dinámico.

2 Estructura

conector conector+contenedor

Los contenedores son motor, host, contexto, servlet/wrapper.

Entonces, la arquitectura es servicio (puerto 8080), conector, motor, host (http:localhost.com), contexto (/mvc, una aplicación web), servlet/wrapper (/add, un servlet).

f090bd57045f4088948e1e7da63585ca.png

 

3 componentes clave

Conector 3.1

3.1.1 Punto final

Utilizado para: comunicación de capa de red tcp/ip, como NIONIO2

3.1.2 Procesador

Se utiliza para: análisis de protocolos de capa de aplicación, como http

3.1.3 Adaptador

Utilizado para: conversión unificada. La solicitud/respuesta de Tomcat se convierte en solicitud/respuesta de servlet y luego se pasa al contenedor.

  • La solicitud de servlet es una interfaz clave en la API de servlet de Java.
  • La API de Java Servlet es un conjunto de interfaces y clases en Java EE (ahora conocido como Jakarta EE) para desarrollar aplicaciones Java del lado del servidor. Servlet es uno de los tres componentes principales de JavaWeb (Servlet, Filtro, Oyente). Se utiliza principalmente para procesar solicitudes de clientes y generar respuestas.

3.2 Patrones de diseño

3.2.1 Ideas de diseño de puntos cambiantes y puntos constantes.

Los puntos invariantes se implementan con clases e interfaces abstractas (como ProtocolHanlder, AbstractProtocol) y los puntos de cambio se implementan con clases concretas (como Http11NioProtocol, Http11Nio2Protocol)

47fd583736914b5e9911f0e38c739565.png

27e141a1618a4d7b8977cd9fc5a4f24a.png

Imagen cortesía de f646124c6f57416c8648621ea75dbfa3.png

2357e1b0231e4de2b32e8c70f79b00b6.png

6fc9747fa2b14a649d16a3e70e00650d.png

d81414cef6f5481a87660f58599c0e96.png

3.2.2 Modo adaptador

Adaptador, adaptador Tomcat o Coyote.


3.2 contenedor

3.2.1 Cómo administrar el motor, el host, el contexto y el servlet, y usar el modo combinado para permitir que todos implementen Container

  • El patrón compuesto es un patrón de diseño estructural que le permite combinar objetos en una estructura de árbol para representar una jerarquía "parte-todo". En este modo, el uso por parte del cliente de objetos individuales y objetos compuestos es consistente, es decir, el cliente puede manejar objetos individuales y sus combinaciones de la misma manera.

Para decirlo sin rodeos, se utiliza una clase/interfaz para ensamblar una estructura de árbol (con una relación padre-hijo. Esta es una combinación, y debido a que todas implementan la misma interfaz, las llamadas a cada parte son las mismas).Como se muestra abajo

Imagen: d785e0ea64ad4fb6952f9460fcbef154.png

3.2.2 El motor, el host, el contexto y el servlet se llaman secuencialmente, utilizando el modelo de cadena de responsabilidad Pipeline-Valve.

La tubería es una cadena de responsabilidad y una cola, y los elementos de la cola son válvulas. La válvula puede ejecutar la lógica de procesamiento y transferirla al siguiente valor.

La diferencia entre válvula y filtro: la válvula es de Tomcat, el filtro es de la API del servlet de Java. La válvula funciona a nivel de contenedor web e intercepta todas las solicitudes de aplicaciones. El filtro funciona a nivel de aplicación e intercepta una determinada solicitud de aplicación web.

08b1200a4585496e98a08c964952573a.png

3635bb9b0a7c46a1997621631c00212c.png

acb7a18568bd41c1b4ded295aeee2060.png

Imagen: d28296d8ebba41d5acc6c209df8c0538.png

3.2.3 Ciclo de vida de la gestión del motor y solicitudes de asignación

Solicitud de asignación: componente del mapeador de mapas. Encuentre el contenedor correspondiente capa por capa según la URL.

Ciclo de vida: Responsable de la creación, inicialización, puesta en marcha, destrucción, etc. Cada contenedor hereda LifeCycle. Entonces también es un modo combinado.

También se utiliza el patrón de observador (monitoreo de cambios en el estado del ciclo de vida),

Modo combinado (la estructura de árbol tiene una relación padre-hijo),

Patrón de diseño de plantilla (escribir plantillas universales (lógica general), llamar a nuevos métodos en la plantilla e implementar los nuevos métodos de manera concreta)

 

4 Diseño de arquitectura

  1. Lista de necesidades
  2. Clase de diseño orientado a objetos.
  3. Encuentre los puntos cambiantes y sin cambios en la demanda.
  4. Los puntos de cambio se implementan con clases abstractas y los puntos invariantes se implementan con clases concretas.