Esse artigo faz parte da revista Java Magazine edição 08. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler esse artigo em PDF.imagem_pdf.jpg,

O melhor de dois mundos

Configurações básicas e avançadas para a integração do Servidor HTTP Apache com o Tomcat, utilizando o JK2

A popularidade do Servidor HTTP Apache é indiscutível. Segundo uma pesquisa da Netcraft, de 2003, mais de 63% dos websites são servidos por ele. O Apache é um servidor web rápido e maduro que se sobressai ao servir conteúdo estático, tais como páginas HTML e imagens, e em muitas outras áreas, como em mecanismos de autenticação, segurança via SSL e certificados, estabilidade, suporte a domínios virtuais e in­tegração com outras ferramentas.

Por outro lado, o container web Tomcat é ex­celente para servir páginas dinâmicas basea­das em JSP e servlets, além de, claro, ser capaz de servir páginas estáticas. Como sabemos, o Tomcat é a implementação de referência do container para as tecnologias de servlets e JavaServer Pages. Pode operar como um ser­vidor web independente, ou atuar como um container out-of-process para outros servidores web como o Apache ou o IIS.

Apesar de fornecer uma solução completa para JSPs e servlets, o Tomcat não pode ser considerado ideal como servidor web em um ambiente de produção. Primeiro,  não é tão rápido ao servir páginas estáticas; segundo, é pouco configurável com relação a tipos de arquivos suportados ou domínios virtuais; finalmente, existem muitas empresas com grandes investimentos baseados em outras tecnologias web – por exemplo CGI, Perl, PHP – não suportadas pelo Tomcat, mas incorporadas ao Apache há anos.

Para construir aplicações web rápidas e escaláveis, os requisitos para um ambiente de produção robusto apontam para um ser­vidor Apache que delega requisições a JSPs e servlets para um ou mais containers Tomcat. Isso pode ser feito utilizando um módulo de comunicação entre as duas partes – um co­nector, que é composto por um componente escrito em Java e outro em código nativo (geralmente em C/C++). O primeiro faz a comunicação do lado do Tomcat, recebendo as requisições provenientes do segundo, que se encontra no Apache.

 

Figura 1. Arquitetura proposta

Conectores JTC

Os conectores do subprojeto JTC (jakarta-tomcat-connectors) são pequenos módulos que fazem a comunicação entre o Apache e o Tomcat, ou entre o Tomcat e qualquer ou­tro servidor web. Conheça um pouco mais sobre os principais conectores oferecidos pelo Tomcat:

• mod_jserv – foi o primeiro conector a surgir, originando o protocolo AJP (Apache JServ Protocol). Atualmente está obsoleto e não é mais utilizado. Um detalhe: “JServ” é o nome de um antigo projeto de container web da Apache Foundation, descontinuado em favor do Tomcat;

• webapp (mod_webapp) – originado do mod_jserv, se comunica com o servidor web através do protocolo WARP, bastante utili­zado, devido à sua simplicidade e por usar um protocolo mais leve. É baseado no APR (Apache Portable Runtime), uma biblioteca escrita em C que constitui uma camada de portabilidade para comunicação, mas que é disponível apenas para o Apache, não supor­tando outros servidores web;

• JK (mod_jk) –  desenvolvido para eliminar as limitações do mod_jserv. Suporta diversos servidores web – não apenas o Apache –, além de diversos sistemas operacionais e comunicação SSL, tudo isso através do pro­tocolo AJP1.3;

• JK2 (mod_jk2) – é uma reestruturação completa do JK, com configuração bas­tante simplificada. Foi desenvolvido para o Apache 2, mas funciona bem com o 1.3. Assim como o JK, pode ser utilizado por vários servidores web como IIS, Netscape, iPlanet e Domino. Suporta HTTP e HTTPS e apresenta maior modularidade, através da separação entre as camadas de protocolo e de transporte. O conector JK2 pode ser estendi­do por meio de handlers para prover vários canais de comunicação, tais como sockets TCP, fast unix-sockets (tipo de socket dispo­nível no Unix/Linux apenas para conexões locais, baseado em memória compartilhada), classes definidas pelo usuário, ou usando JNI (Java Native Interface), o que permite embutir o Tomcat em aplicações nativas. O JK2 também pode usar NIO (a nova API de entrada e saí­da do Java 1.4), além de ter suporte adicional ao monitoramento da comunicação entre o container e o servidor web.

Veja mais detalhes sobre os módulos nas Tabelas 1 e 2. O foco deste artigo será no conector JK2, implementando a arquitetura básica apresentada na Figura

Módulo Apache Protocolo

...
Quer ler esse conteúdo completo? Tenha acesso completo