Compartilhamento de tecnologia

Princípio, estrutura e padrão de design do Tomcat

2024-07-12

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

1 o que

Um servidor web que executa java servlet e tecnologia jsp pode fornecer um ambiente de execução para java web e lidar com solicitações de clientes por meio do protocolo http. Isso é tomcat = servidor http + contêiner de servlet. Produtos semelhantes incluem cais

  • Aplicativo web : aplicativos da Web referem-se a aplicativos acessados ​​por meio de um navegador da Web, que usam tecnologias e padrões da Web (como HTTP, HTML, CSS, JavaScript, etc.) para fornecer interfaces de usuário e interagir com os usuários. Os aplicativos da Web podem incluir componentes front-end e back-end. O front-end é responsável pela interface do usuário e pela apresentação, e o back-end é responsável pela lógica de negócios e pelo processamento de dados.
  • Servlet : Servlet faz parte da especificação Java EE. É um programa Java executado no lado do servidor. Ele é usado para receber solicitações de clientes (como navegadores da web), processar essas solicitações (incluindo acessar bancos de dados, chamar a lógica de negócios, etc.). ) e retorne Responder ao cliente. Servlet é uma das principais tecnologias para construção de conteúdo web dinâmico

2 Estrutura

conector conector+recipiente

Os contêineres são mecanismo, host, contexto, servlet/wrapper

Portanto, a arquitetura é serviço (porta 8080), conector, mecanismo, host (http:localhost.com), contexto (/mvc, uma aplicação web), servlet/wrapper (/add, um servlet)

f090bd57045f4088948e1e7da63585ca.png

 

3 componentes principais

Conector 3.1

3.1.1 Ponto final

Usado para: comunicação de camada de rede tcp/ip, como NIONIO2

3.1.2 Processador

Usado para: análise de protocolo da camada de aplicação, como http

3.1.3 Adaptador

Usado para: conversão unificada. A solicitação/resposta do Tomcat é convertida em solicitação/resposta de servlet e depois passada para o contêiner.

  • solicitação de servlet é uma interface chave na API Java Servlet.
  • A API Java Servlet é um conjunto de interfaces e classes em Java EE (agora conhecido como Jakarta EE) para desenvolver aplicativos Java do lado do servidor. Servlet é um dos três principais componentes do JavaWeb (Servlet, Filter, Listener). É usado principalmente para processar solicitações de clientes e gerar respostas.

3.2 Padrões de projeto

3.2.1 Idéias de design de pontos variáveis ​​e pontos constantes

Os pontos invariantes são implementados com classes e interfaces abstratas (como ProtocolHanlder, AbstractProtocol) e os pontos de mudança são implementados com classes concretas (como Http11NioProtocol, Http11Nio2Protocol)

47fd583736914b5e9911f0e38c739565.png

27e141a1618a4d7b8977cd9fc5a4f24a.png

f646124c6f57416c8648621ea75dbfa3.png

2357e1b0231e4de2b32e8c70f79b00b6.png

6fc9747fa2b14a649d16a3e70e00650d.png

d81414cef6f5481a87660f58599c0e96.png

3.2.2 Modo adaptador

Adaptador, adaptador tomcat/coyote.


3.2 recipiente

3.2.1 Como gerenciar mecanismo, host, contexto e servlet e usar o modo de combinação para permitir que todos implementem Container

  • O Padrão Composto é um padrão de design estrutural que permite combinar objetos em uma estrutura de árvore para representar uma hierarquia "parte-todo". Nesse modo, o uso de objetos únicos e objetos compostos pelo cliente é consistente, ou seja, o cliente pode manipular objetos únicos e suas combinações da mesma maneira.

Para ser franco, uma classe/interface é usada para montar uma estrutura em árvore (com um relacionamento pai-filho). Isso é uma combinação e, como todas implementam a mesma interface, as chamadas para cada parte são as mesmas.Como mostrado abaixo

d785e0ea64ad4fb6952f9460fcbef154.png

3.2.2 Motor, host, contexto e servlet são chamados sequencialmente, usando o modelo de cadeia de responsabilidade Pipeline-Valve.

Pipeline é uma cadeia de responsabilidade e uma fila, e os elementos da fila são válvulas. A válvula pode executar a lógica de processamento e transferi-la para o próximo valor.

A diferença entre válvula e filtro: a válvula é do Tomcat, o filtro é da API do servlet java. A válvula funciona no nível do contêiner da web e intercepta todas as solicitações do aplicativo. O filtro funciona no nível do aplicativo e intercepta uma determinada solicitação do aplicativo da web.

08b1200a4585496e98a08c964952573a.png

3635bb9b0a7c46a1997621631c00212c.png

acb7a18568bd41c1b4ded295aeee2060.png

d28296d8ebba41d5acc6c209df8c0538.png

3.2.3 Ciclo de vida de gerenciamento do motor e solicitações de alocação

Solicitação de alocação: componente mapeador de mapeamento. Encontre o wrapper correspondente camada por camada de acordo com o URL.

Ciclo de vida: Responsável pela criação, inicialização, inicialização, destruição do contêiner, etc. Cada Container herda o LifeCycle. Portanto, também é um modo de combinação.

O padrão observador também é usado (monitorando mudanças no status do ciclo de vida),

Modo de combinação (a estrutura em árvore tem relacionamento pai-filho),

Padrão de design de modelo (escrever modelos universais (lógica geral), chamar novos métodos no modelo e implementar os novos métodos de maneira concreta)

 

4 Projeto de arquitetura

  1. Listar necessidades
  2. Classe de design orientado a objetos
  3. Encontre os pontos variáveis ​​​​e inalterados na demanda
  4. Os pontos de mudança são implementados usando classes abstratas e os pontos invariantes são implementados usando classes concretas.