Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Configuração Básica
Márcio d'Ávila, 16 de dezembro de 2003. Revisão 31, 23 de agosto de 2008.
Categoria: Programação: Java: Servidor
Sem JavaScript neste navegador, não é possível exibir algumas imagens ilustrativas adicionais
em janela separada (pop-up).
Nota:Na revisão 13 deste tutorial, o conteúdo foi bastante ampliado e atualizado. Os
tópicos de criação e configuração de contexto sofreram as maiores mudanças, visando
melhor organização e padronização do ambiente, inclusive passando a funcionar de
forma unificada tanto para a versão 5 quanto a 4 do Tomcat. A revisão 18 passou a
cobrir também Tomcat 5.5. A revisão 25 começou a cobrir Tomcat 6.0.
Sumário
• Introdução
Introdução
O Tomcat é um servidor de aplicações Java para web. É software livre e de código
aberto, surgido dentro do conceituado projeto Apache Jakarta e que teve apoio e
endosso oficial da Sun Microsystems como Implementação de Referência (RI) para as
tecnologias Java Servlet e JavaServer Pages (JSP). Atualmente, o Tomcat tem seu
próprio projeto de desenvolvimento independente, dentro da Apache Software
Foundation. O Tomcat é robusto e eficiente o suficiente para ser utilizado mesmo em
um ambiente de produção.
Nota: A partir do Java EE 5.0, com as versões de especificações Servlet 2.5 e JSP 2.1, a
implementação de referência (RI) destas tecnologias passou a ser o servidor de
aplicações Java EE 5.0 completo (Web e EJB) Sun Java System Application Server
Platform Edition 9, baseado no projeto de software livre GlassFish.
O Tomcat porém não implementa um contêiner EJB. Para aplicações Java Enterprise
Edition (Java EE) que utilizam Enterprise JavaBeans (EJB), você deve procurar um
servidor de aplicações Java EE completo, como JBoss AS (software livre), GlassFish
(software livre), Apache Geronimo (software livre), IBM WebSphere (comercial), BEA
WebLogic (comercial), Oracle AS (comercial), ou o Java EE SDK que inclui Sun Java
System Application Server Platform Edition (gratuito), entre outros.
Alternativas?Se você quer considerar alternativas ao Tomcat, uma boa opção é o projeto
Jetty, servidor web e contêiner Servlet Java, também software livre. Jetty 6 suporta as
mais recentes especificações Servlet 2.5 e JSP 2.1 da plataforma Java EE 5.0.
1. Instalar Java - JSE SDK (JDK)
O Tomcat é inteiramente escrito em Java e, portanto, necessita de uma Java Virtual
Machine (JVM) — Máquina Virtual Java — para ser executado. Assim, é necessário ter
a plataforma Java Padrão, Java Platform Standard Edition (Java SE), previamente
instalada.
Tomcat 4.1 e 5.0 necessitavam do JDK, para compilar as páginas JSP. O Tomcat 5.5 em
diante traz embutido e usa o complilador Java Eclipse JDT para compilar JSP. Assim, o
Tomcat a partir da versão 5.5 necessita apenas do JRE, mas o JDK ainda é útil para o
desenvolvedor.
Para seu ambiente de desenvolvimento Java com Tomcat, onde você deve criar
aplicações Java em geral, utilize o JDK completo.
O Tomcat 6.0 requer Java SE 5.0 ou superior. O Tomcat 5.5 suporta também J2SE
1.4.x, mas é necessário instalar um pacote adicional de compatibilidade.
Considere optar por versão anterior de JDK somente se o Java SE mais recente ainda
não está disponível para o seu sistema operacional, ou se há alguma restrição de
suporte, compatibilidade com aplicações pré-existentes ou outro impedimento crítico.
Quando este tutorial foi editado, a atualização mais recente de Java SE SDK
disponibilizada pela Sun Microsystems era JDK 6.0 Update 7, para Windows, Linux e
Solaris.
Para obter o Java SE SDK (JDK) e informações sobre a instalação em seu sistema
operacional, acesse os links correspondentes a seguir:
Mac OS X - Apple
• Download: Apple - Java Downloads, Apple Downloads - Mac OS
X Updates
• Informação: Apple Developer Connection: Java, Java for Apple
Mac OS X
HP-UX - HP
• Download: Java technology software for HP-UX
• Informação: HP Unix - Java Information Library
FreeBSD
• Download: FreeBSD JDK Distributions
• Informação: FreeBSD Java Project
• Home-page: http://java.sun.com/javase/
Mais detalhes sobre convenções de nome e versão do ambiente Java padrão podem ser
encontrados em J2SE Code Names e Version 1.5.0 or 5.0.
Nota:É possível haver várias versões de JDK/JRE instaladas no computador em locais
distintos, convivendo sem problema. Neste caso, é importante ficar atento a qual versão
será selecionada para uso do Tomcat. A variável de ambiente padrão JAVA_HOME
deve ser definida (e mantida atualizada) indicando o local de instalação do J2SE
preferencial (veja item 1.3 adiante). Esta variável é consultada pelo Tomcat e vários
outros sistemas baseados em Java para determinar a JVM preferencial.
1.3. JAVA_HOME
Para mais informações sobre variáveis de ambiente recomendadas, veja também a seção
13 deste tutorial.
2. Instalar Tomcat
2.1. Qual versão de Tomcat utilizar
A versão anterior 5.5 do Tomcat ainda é muito utilizada, pois a especificação J2SE 1.4 e
suas tecnologias, bem como os produtos basados nelas, estão maduros e bem difundidos
no mercado. Já o Tomcat 4.1 está muito defasado e não é recomendado.
• Download: http://tomcat.apache.org/download-60.cgi
• Informação: Tomcat 6.0 Setup e RUNNING.txt 6.0, Tomcat 5.5 Setup e
RUNNING.txt 5.5, RUNNING.txt 4.1
• Home-Page: tomcat.apache.org (antigo jakarta.apache.org/tomcat/)
Quando este tutorial foi editado, a versão estável mais recente era Tomcat 6.0.18 (APIs
Servlet 2.5 e JSP 2.1, integrantes do Java EE 5.0). O download do instalador para
Windows pode ser acessado no site primário em apache-tomcat-6.0.18.exe (instalador
com serviço Windows). A página principal de download apresenta todas as alternativas
de versões de Tomcat e repositórios de download (mirrors).
Importante:O Tomcat 6.0 requer Java SE 5.0 ou superior. O Tomcat 5.5 suporta também
J2SE 1.4.x, mas é necessário baixar e descompactar o pacote adicional de
compatibilidade com JDK 1.4 (apache-tomcat-5.5.*-compat.zip).
Tomcat 4.1 e 5.0 exigiam um JDK instalado. O Tomcat 5.5 em diante necessita apenas
do JRE, embora o JDK continue útil para o desenvolvedor. De qualquer forma, é
interessante que esteja definida a variável de ambiente JAVA_HOME apontando para o
local de instalação do JDK mais atual. Importante - Tomcat Windows: No passo
"Java Virtual Machine path selection" do instalador, certifique-se de informar o
caminho correto do JDK.
Importante:O separador de diretórios mais usado aqui é a barra normal (/) do Unix e
Linux; usuários do Windows devem substituir pela barra-invertida (\) quando
apropriado. Note que a barra de Unix é aceita como separador de diretório mesmo em
Windows nos arquivos de configuração do Tomcat e pelos programas java e javac.
Nota:O Tomcat Monitor foi atualizado várias vezes durante a evolução do Tomcat 5. Os
procedimentos e ilustrações apresentados a seguir refletem o Apache Service Manager
incluso no Tomcat 5.0.22 em diante. Existem algumas diferenças nas versões anteriores.
• [Windows] Para iniciar e parar o Tomcat (5 em diante) como serviço, o
recomendo é usar o Tomcat Monitor, que consiste na ferramenta Apache
Service Manager (Procrun) fornecida com o Tomcat:
1. Inicie o Tomcat Monitor utilizando o atalho em: Iniciar > Programas >
Apache Tomcat > Monitor Tomcat. Deve surgir um pequeno ícone (ver
imagem) na área de notificação da barra de tarefas do Windows (ao lado
do relógio). Este ícone indica o estado atual do serviço Tomcat
(quadrado vermelho = parado, triângulo verde = iniciado).
2. Clique no ícone com o botão direito do mouse; no menu de contexto que
se abre, escolha "Start service" ou "Stop service" (ver imagem).
Tomcat 5 em diante
Iniciar: net start "Apache Tomcat"
Parar: net stop "Apache Tomcat"
Tomcat 4.1
Iniciar: net start "Apache Tomcat 4.1"
Parar: net stop "Apache Tomcat 4.1"
Para mais informações sobre como gerenciar e executar o Tomcat como serviço do
Windows, o uso dos programas tomcat6w.exe (Procrun Service Manager) e
tomcat6.exe (Service Runner) e seus respectivos parâmetros de linha de comando,
veja a página Apache Tomcat 6.0 - Windows service HOW-TO.
4. Testar Tomcat
Para testar se o Tomcat está rodando ok após iniciado, abra o browser e vá para o
endereço:
http://localhost:8080/
O Tomcat inclui um contexto chamado Tomcat Manager, que provê uma interface web
amigável para gerenciar as aplicações (contextos) — listar, parar, iniciar, recarregar,
instalar (deploy), remover (undeploy) — e ver informações e estado do servidor e de
suas conexões/threads. O instalador Windows solicita o login de usuário (padrão é
admin) e a senha para acesso a este recurso.
Crie um diretório que será a sua estrutura de desenvolvimento web Java. Uma
organização simples sugerida é a seguinte:
• dev/
Supondo que seu diretório "dev" seja em C:\dir\dev\ (Windows), assim, o módulo
web ficaria em C:\dir\dev\web.
Nota:Esta estrutura, apesar de simples, costuma ser suficiente e adaptável ao modelo de
organização da maioria das ferramentas (IDEs) de desenvolvimento Java (como Eclipse,
NetBeans, JDeveloper etc.), ao menos para um único projeto. Para referências sobre
modelos de organização de projeto e código-fonte, veja o tópico “Mais informações”
deste tutorial.
A tarefa aqui consiste em criar no Tomcat um novo contexto de aplicação web, para seu
ambiente de desenvolvimento. Existem basicamente três meios de se criar um contexto
no Tomcat, cuja configuração corresponde a um código XML com um elemento
Context:
</Context>
Crie o arquivo web.xml descritor para o novo contexto de aplicação web criado, dentro
do diretório dev/web/WEB-INF/. Um conteúdo mínimo para ele, com as configurações
apresentadas, é listado a seguir.
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>Desenvolvimento</display-name>
<description>
</description>
<servlet>
<servlet-name>dev-invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dev-invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
</web-app>
Como se pode observar no XML anterior, ele se refere ao descritor de Aplicação Web
da especificação Servlet 2.5 (integrante do Java EE 5). Para utilizar apenas recursos de
uma versão anterior de descritor de Aplicação Web, substitua o cabeçalho do XML e a
definição da tag raiz web-app pelo da respectiva versão. Eis a alteração de cabeçalho
para Servlet 2.4:
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
...
</web-app>
E a seguir o cabeçalho para a especificação Servlet 2.3. Note que a estrutura do XML na
versão 2.3 é definida por um DTD definido na tag DOCTYPE, enquanto as versões
mais recentes usam XML Schema (XSD), definido por atributos de namespace na
própria tag web-app.
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
...
</web-app>
7. Ativar contexto
Para garantir a ativação do novo contexto criado, reinicie o Tomcat (stop/start).
Tomcat 5+:
12/09/2004 12:09:00
org.apache.coyote.http11.Http11Protocol init
12/09/2004 12:09:01
org.apache.catalina.startup.Catalina load
(...)
12/09/2004 12:09:06
org.apache.catalina.core.StandardHostDeployer install
.../Tomcat6.0/conf/Catalina/localhost/dev.xml
O Tomcat 5 em diante gera por padrão muito menos mensagens em log para os
contextos do que o Tomcat 4, de forma que a inicialização não gera nenhuma
mensagem no arquivo de log específico do contexto dev. Por isso, não estranhe
se você não encontrar inicialmente nenhum arquivo localhost_dev_log.*.txt
na pasta logs.
Tomcat 4:
Logo após a inicialização do Tomcat, o arquivo de log geral do host para o
servidor Tomcat, que é criado em logs com nome no formato
localhost_log.2004-09-12.txt, onde 2004-09-12 corresponde ao ano, mês e
dia atuais, deve iniciar com um conteúdo similar ao trecho apresentado a seguir.
Observe a mensagem (em destaque no quadro) que indica que o contexto
configurado pelo arquivo dev.xml foi processado.
(...)
.../Tomcat4.1/work/Standalone/localhost/dev
8. Testar contexto
Para testar o novo contexto, acesse o endereço:
http://localhost:8080/dev/
Se o Tomcat retornar a página de erro 404 - Não Encontrado, houve algum problema de
forma que o contexto não foi ativado. O problema mais comum é haver algum erro de
sintaxe no elemento Context no arquivo XML que define o contexto. Verifique os logs
do Tomcat, conforme a seção 12 adiante, à procura de erros. Você pode também usar
algum dos muitos Validadores de XML existentes como auxílo, como por exemplo o
serviço on-line de Validação de XML do STG, que verifica um XML em arquivo, URI
na web ou o texto copiado diretamente em um formulário.
9. Bibliotecas Servlet
Para compilar servlets, você precisa essencialmente importar os pacotes
javax.servlet e javax.servlet.http. As bibliotecas com estes pacotes também
estão inclusas como JAR no Tomcat e devem ser adicionadas ao CLASSPATH do
compilador javac:
Tomcat 5:
CATALINA_HOME/common/lib/servlet-api.jar
CATALINA_HOME/common/lib/jsp-api.jar
Tomcat 4:
CATALINA_HOME/common/lib/servlet.jar
Se você tem o J2EE SDK da Sun instalado, pode alternativamente usar o j2ee.jar
incluso com ele, que contém todas as APIs do Java EE inclusive Servlet/JSP. Mas o
mais simples é usar o(s) jar(s) do Tomcat. Isso garante total compatibilidade entre a
versão das APIs Servlet/JSP usadas no desenvolvimento e no seu Tomcat.
Além disso, se o código Java de uma classe servlet sua importar pacotes ou classes de
uma biblioteca de terceiros (que não seja parte das APIs J2SE e Servlet/JSP), o JAR
com as classes compiladas desta biblioteca deve estar no diretório WEB-INF\lib\ para
que o Tomcat encontre.
Se o arquivo estiver em dev/src/, você pode abrir uma janela de comandos (prompt)
neste local, certificar-se que o CLASSPATH está devidamente configurado conforme o
item 9 deste tutorial, e executar o compilador javac, direcionando o destino para
../web/WEB-INF/classes/:
http://localhost:8080/dev/servlet/AloMundoServ
Podem ser criados, no web.xml, outros mapeamentos específicos para uma ou mais
servlets. Para isso, você deve conhecer a sintaxe dos elementos <servlet> e
<servlet-mapping>.
http://localhost:8080/dev/alomundo.jsp
12. Logs
Para configurar a gravação de log (registro histórico) em sua aplicação, veja a página
Logging in Tomcat 6.0 (ou 5.5) para detalhes.
Em Windows, lembre-se que a opção Configure Tomcat (veja tópico 3.1) permite
definir o nível padrão, localização e prefixo dos arquivos de log do Tomcat.
Para ver logs de acesso, erro e depuração, leia os txt's gerados em:
CATALINA_HOME\logs\
Quando existirem muitos arquivos de log no Tomcat de desenvolvimento e você quiser
limpar o diretório para facilitar o rastreamento dos logs, pode:
As saídas padrão (stdout) e de erro (stderr) podem ser exibidas de diversas formas,
dependendo de como o Tomcat foi inicializado:
JAVA_HOME
Local de instalação do Kit de Desenvolvimento Java J2SE (JDK).
CATALINA_HOME
Local de instalação do Tomcat.
CLASSPATH
Caminhos (pacotes e diretórios) de localizações de classes Java; o classpath deve
incluir o(s) jar(s) dos pacotes Servlet e JSP do Tomcat.
PATH
Caminhos (diretórios) de localizações de executáveis no sistema operacional,
deve incluir o diretório bin das ferramentas do Java SDK.
set CLASSPATH=%CATALINA_HOME%\common\lib\servlet-api.jar;.;
%CLASSPATH%
set CLASSPATH=%CATALINA_HOME%\common\lib\jsp-api.jar;%CLASSPATH%
set PATH=%JAVA_HOME%\bin;%PATH%
JAVA_HOME=/opt/javase
CATALINA_HOME=/opt/tomcat
CLASSPATH=$CATALINA_HOME/common/lib/servlet-api.jar:.:$CLASSPATH
CLASSPATH=$CATALINA_HOME/common/lib/jsp-api.jar:$CLASSPATH
PATH=$JAVA_HOME/bin:$PATH
Tomcat 5:
JSP Examples: http://localhost:8080/jsp-examples/
Servlet Examples: http://localhost:8080/servlets-examples/
Tomcat 4:
Servlet Examples: http://localhost:8080/examples/servlets/
JSP Examples: http://localhost:8080/examples/jsp/
15. E agora?
Terminada a instalação do software, está aberta a sua temporada de desenvolvimento
Java para web. A tecnologia e as informações envolvidas na programação são assuntos
muito mais abrangentes e não estão no escopo deste tutorial. Para desenvolver em Java
para web, você deve ter bons fundamentos dos seguintes tópicos essenciais:
• orientação a objetos;
• linguagem de programação Java e APIs da plataforma Java SE;
• arquitetura e mecanismos de sistemas web e o protocolo HTTP;
• HTML, CSS e JavaScript;
• Java Web = Servlets, JSP e JavaBeans.
Se você ainda não tem domínio dos tópicos essenciais, recomendo um bom curso (ou
cursos), em sala de aula, e a leitura de bons livros. O mesmo vale para os tópicos mais
avançados. Há ainda muitas referências disponíveis na web e uma boa quantidade de
grupos de usuários e listas de discussão sobre Java, inclusive no Brasil.
Por fim, existem tópicos avançados sobre Tomcat não abordados por este tutorial,
como:
Apache Tomcat
• Projeto Apache Tomcat: Servlet/JSP Container
• Tomcat FAQ
• Apache Tomcat Wiki
• Apache Commons - Daemon: daemons (jsvc para Unix) e
serviços (Procrun para Win32) baseados em Java