O servidor Apache Tomcat é um container Web de código fonte aberto baseado em Java que foi criado para executar aplicações Web que utilizam tecnologias Servlets e JSPs. O servidor Tomcat foi criado inicialmente como um subprojeto da Apache-Jakarta, no entanto, devido a sua alta popularidade, acabou sendo designado para um projeto separado da Apache, sendo assim mantido por um grupo de voluntários da comunidade de código aberto do Java.Apache Tomcat é um servidor bastante estável com todas as características que um container comercial de aplicações web possui.Atualmente as versões que ainda recebem suporte são 5.5x, 6.0x e 7.0x. Versões anteriores a 5.5 ainda encontram-se disponíveis para download no site da Apache, porém estão arquivadas e não possuem mais suporte. Por isso, recomenda-se que os usuários adquiram as últimas versões disponíveis.

Compatibilidade do Tomcat

A compatibilidade do servidor Tomcat com a JVM instalada também deve ser verificada. Além disso, também há outras compatibilidades que devem ser verificadas. A tabela abaixo mostra a versão do Tomcat e a versão de outras APIs e da JVM que são compatíveis.

Tabela. Versão do Tomcat, outras APIs e JVM
Apache Tomcat Servlet API JSP API JDK
7.0 3.0 2.2 1.6
6.0 2.5 2.1 1.5
5.5 2.4 2.0 1.4
4.1 2.3 1.2 1.3
3.0 2.2 1.1 1.1

Pela tabela acima podemos verificar que o Tomcat 7 suporta a implementação atual da Servlet API, que é a versão 3.0.

Aplicação Tomcat Manager

O servidor Tomcat trás junto consigo uma aplicação web chamada Tomcat Manager. Esta aplicação web é instalada no contexto/manager e através de qualquer browser provê funcionalidades básicas para gerenciar as aplicações web que estão rodando no servidor.

Entre as funcionalidades oferecidas estão a instalação, inicialização, paralização, remoção e relatórios das aplicações web.

Implementações Especializadas do Realm

O Tomcat disponibiliza métodos de segurança gerenciados pelo container para proteção de recursos dentro do container. Essas "databases" de usuários que podem ser autenticados pelo container são chamadas de realms. Existem dois tipos de realms suportados pelo Tomcat: MemoryRealm e JDBCRealm. O MemoryRealm é onde as informações do usuário são simplesmente lidas de um arquivo e armazenados na memória. Já o JDBCRealm é onde usa-se um banco de dados relacional para armazenar os usuários.

Tomcat Valves

Valves é uma tecnologia introduzida no Tomcat 4 e mantida até as versões mais atuais que permite associar uma instância de uma classe Java com um container em particular. Uma classe Valve age como um preprocessador para todas as requisições vindas do container. Esta tecnologia é propriedade do servidor Tomcat e não pode ser utilizado em nenhum container Servlet/JSP.

Arquitetura Básica do Tomcat

Uma instancia do Tomcat é o componente de mais alto nível na hierarquia do container Tomcat. Apenas uma única instância do Tomcat pode existir em uma única JVM. Esta abordagem torna todas as outras aplicações Java, rodando numa mesma máquina física num servidor Tomcat, seguras caso o Tomcat ou a JVM trave. Podemos ter múltiplas instâncias numa mesma máquina física, porém como processos Java separados rodando em portas separadas.

Uma instância do Tomcat consiste de um grupo de aplicações de container, no qual tem-se uma hierarquia muito bem definida. O componente principal desta hierarquia é o Catalina Servlet Engine. O Catalina trata-se da implementação do Container Servlet conforme especificado no Java Servlet API. Tomcat 7 nada mais é do que a implementação do Servlet API 3.0, a última especificação da SUN. A figura abaixo mostra o relacionamento dos principais componentes da arquitetura do Tomcat.

Principais componentes da arquitetura do Tomcat
Figura 1: Principais componentes da arquitetura do Tomcat

O XML abaixo representa o relacionamento dos componentes acima:

Listagem 1: XML representativo da arquitetura do Tomcat

        <Server>
        <Service>
        <Connector />
        <Engine>
        <Host>
        <Context> </Context>
        </Host>
        </Engine>
        </Service>
        </Server>

Cada um desses componentes são configurados no arquivo server.xml.Abaixo veremos o que é cada um desses elementos:

  • Server: O Server representa todo o Catalina Servlet Engine e é usado como um elemento de nível mais alto para uma simples instância do Tomcat. O elemento <Server> no arquivo server.xml pode ter um ou mais <Service>.
  • Service: O Se·rvice contém uma coleção de um ou mais <Connector> que compartilham um única <Engine>. Vários Services podem estar dentro de um <Server>.
  • Connector: O Connector define as classes que fazem o atual gerenciamento das requisições e respostas de e para uma chamada de uma aplicação cliente.
  • Engine: Um componente Engine gerencia todas as requisições recebidas por todos os <Connector> definidos.
  • Host: O elemento <Host> define os hosts virtuais que são contidos em cada instância do Cataline <Engine>. Cada Host pode ser um pai de uma ou mais aplicações web, na qual cada uma sendo representada por um componente <Context>.
  • Context: É o elemento mais comumente usado numa instância do Tomcat. Cada elemento <Context> representa uma aplicação web individual que está rodando dentro de um <Host> definido. Não existe limite para o número de contextos que podem ser definidos dentro de um <Host>.

Neste artigo vimos o que é o Apache Tomcat, quais suas versões, seus principais componentes e a sua arquitetura básica. Saber os principais elementos do seu servidor de aplicação e como ele funciona ajuda bastante a resolver problemas que possam ocorrer, minimizar defeitos, entre outras situações que normalmente ocorrem com bastante frequência quando estamos utilizando um servidor para fazer deploy das aplicações web.

Bibliografia

  • Aleksa Vukotic, James Goodwill. Apache Tomcat 7. Apress, 2011.

Saiu na DevMedia!

  • Automação Comercial:
    Nesse guia veremos como a automação comercial agiliza os processos nas empresas, aumentando a sua competitividade no mercado. Se você quer aumentar a eficiência de processos manuais.
  • Levantamento de Requisitos:
    Nesta série, falamos sobre as técnicas, como conduzir uma reunião com o cliente e gerar os documentos mínimos necessários para o levantamento dos requisitos do software. Confira!

Saiba mais sobre Java ;)

  • Curso Completo de Java:
    Neste curso você aprenderá a criar o seu primeiro programa com Java, e não, ele não será um simples “Hello, World!”. :) Para isso, vamos começar ensinando como instalar o Java e preparar o ambiente de desenvolvimento.
  • Cursos de Java:
    Torne-se um programador Java completo. Aqui você encontra cursos sobre as mais ferramentas e frameworks do universo Java. Aprenda a desenvolver sites e web services com JSF, Jersey, Hibernate e mais.