Configuração do ambiente de origem
- Importar pacote de origem
- Edite a configuração de execução, defina a classe de entrada e o diretório de construção do projeto (diretório de construção)
- Modifique a versão do JDK do projeto de acordo com as condições locais e codificação de caracteres
1. História da evolução da arquitetura Tomcat
1.1 Servidor único
O servidor é responsável por monitorar sockets, analisar solicitações, concluir tarefas relacionadas e retornar resultados de processamento
- Start (): inicia o servidor, abre a conexão de soquete, monitora a porta de serviço, aceita solicitações do cliente, processa e retorna respostas
- Stop (): Desligue o servidor e libere recursos
- Desvantagens: o monitoramento de solicitação e o processamento de solicitação juntos têm escalabilidade pobre (comutação de protocolo, implantação independente de tomcat usa protocolo HTTP e Apache usa protocolo AJP)
1.2 Separação de protocolo de rede e processamento de solicitação
Divida o servidor em duas partes: componente Conector e componente Container
![](https://img-blog.csdnimg.cn/2020091712491291.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzNTkyNw==,size_16,color_FFFFFF,t_70#pic_center)
- Conector
- Abra o Socket e monitore a solicitação do cliente e retorne os dados de resposta;
- Um conector corresponde a uma porta
- Container: responsável pelo processamento de pedidos específicos
1.3 Apresentando a camada intermediária de serviço
serviço é responsável por gerenciar Conector e Contêiner e estabelecer um relacionamento de mapeamento
- Um servidor pode conter vários serviços, cada serviço é independente, eles compartilham uma JVM e uma biblioteca de classes do sistema.
- Um serviço é responsável por manter vários conectores e um contêiner
- Desta forma, a solicitação do Conector só pode ser processada pelo Contêiner mantido pelo Serviço ao qual pertence; quando várias portas precisam ser usadas, vários serviços devem ser configurados
- Aqui, Container é um conceito geral. Para esclarecer a função e ter o mesmo nome do componente no Tomcat, Container pode ser nomeado Engineer
- O Tomcat iniciará um serviço chamado Catalina por padrão
1.4 Implementar contêiner por meio de divisão de tarefas
O Container é dividido em quatro partes: Engine, Host, Context, Wrapper e conectado por meio da cadeia de modo de responsabilidade
- Mecanismo: Não há contêiner pai. Um Mecanismo representa um mecanismo servlet completo. Ele recebe a solicitação do Conector e decide para qual Host transmitir para processamento. Após o Host processar a solicitação, ele retorna o resultado para o Mecanismo e o Mecanismo retorna o resultado para o Conector. .
- Host: indica um host virtual, ou seja, um Tomcat pode ter vários nomes de domínio; este design está em conformidade com o estágio inicial do tomcat, os recursos do servidor são restritos e um servidor precisa implantar vários serviços de diferentes nomes de domínio; um motor pode ter vários hosts
- Contexto: indica um aplicativo da web, ou seja, um aplicativo sob webapp; um Host pode ter vários contextos
- Wrapper: representa um servlet, usado para processar especificamente a solicitação correspondente; um Contexto pode ter vários Wrapper
1.5 Gerenciamento unificado de componentes: adicionar ciclo de vida (LifeCycle) a todos os componentes
- O ciclo de vida inclui
- Status do ciclo de vida: BEFORE_INIT_EVENT, AFTER_INIT_EVENT, START_EVENT, etc.
- Métodos de ciclo de vida: init (), start (), stop, getState (), etc.
- Cada componente tem um ciclo de vida
- Conector: implemente diretamente a interface LifeCycle
- Container: o próprio container é uma interface, ele implementa LifeCycle, então suas classes de implementação específicas têm um ciclo de vida
2. Diagrama da arquitetura geral do Tomcat
2.1 Conector
![](https://i.loli.net/2020/02/02/QuqNCEvhrJInGSL.jpg)
- Endpoint é usado para lidar com a conexão de rede do Socket subjacente, ou seja, para implementar o protocolo TCP / IP
- Processador é usado para encapsular o Socket recebido pelo Endpoint em Request, que implementa o protocolo HTTP
- O adaptador é usado para entregar a solicitação encapsulada ao contêiner para processamento específico.
2.2 Container
![](https://i.loli.net/2020/02/02/nopbJmwXEx2KM5a.jpg)
Um link de referência está anexado no final do artigo