SlideShare une entreprise Scribd logo
1  sur  9
Télécharger pour lire hors ligne
Java 2 Enterprise Edition

Componentes
Web J2EE
Helder da Rocha (helder@acm.org)
www.argonavis.com.br

1
Sobre este módulo
Neste módulo conheceremos uma nova maneira de fazer
deployment: arquivos WAR
Com arquivos WAR pode-se colocar uma aplicação no ar, em muitos
casos, simplesmente copiando o arquivo para um determinado local
do servidor

A criação de arquivos WAR é basicamente uma tarefa de
copiar e compactar
Usaremos o Ant para implantar as operações

Reimplantar um arquivo WAR é simples no JBoss, mas é
trabalhoso no Tomcat
Requer a remoção do WAR e do diretório criado
Requer o reinício do servidor

por este motivo, continuaremos a copiar os arquivos para o
servidor nos próximos módulos, apesar de criar o WAR
2
Web Archive
Utilizável no Tomcat e também em servidores J2EE
Permite criação de novo contexto automaticamente
Coloque JAR contendo estrutura de um contexto no diretório
de deployment (webapps, no Tomcat)
O JAR deve ter a extensão .WAR
O JAR deve conter WEB-INF/web.xml válido
Exemplo - aplicação: http://servidor/sistema/
arquivos.html, .jpg, .gif, .jsp, ...

WEB-INF/
web.xml
classes/
lib/

sistema.war

3
Como criar um WAR
O mesmo WAR que serve para o Tomcat, serve para
o JBoss, Weblogic, WebSphere, etc.
Todos aderem à mesma especificação

Há várias formas de criar um WAR
Usando o deploytool do Tomcat.
Usando um aplicativo tipo WinZip
Usando uma ferramenta JAR:
jar -cf arquivo.war -C diretorio_base .
Usando a ferramenta packager do kit J2EE:
packager -webArchive <opções>
Usando a tarefa <jar> ou <war> no Ant
4
WAR criado pelo Ant
Pode-se criar WARs usando a tarefa <jar> ou <war>
Com <jar> você precisa explicitamente definir seus diretórios
WEB-INF, classes e lib (usando um <zipfileset>, por exemplo) e
copiar os arquivo web.xml, suas classes e libs.
Com <war> você pode usar o atributo webxml, que já coloca o
arquivo web.xml no lugar certo, e outros elementos de um war:
<war warfile="bookstore.war" webxml="etc/metainf.xml">
<fileset dir="web" >
<include name="*.html />
WEB-INF/web.xml
<include name="*.jsp" />
raiz do WAR
</fileset>
<classes dir="${build}" >
<include name="database/*.class" /> WEB-INF/classes
</classes>
<lib dir="${lib.dir}" />
WEB-INF/lib
<webinf dir="${etc.dir}" />
</war>
WEB-INF/

Veja o manual do Ant para outros exemplos e detalhes

5
Configuração externa do WAR
(servidores J2EE)
Configuração externa ao WAR pode ser feita quando WAR é
acrescentado em um arquivo EAR e funciona em servidores
J2EE (JBoss, por exemplo)
EAR é JAR comum com arquivo application.xml no seu META-INF

O arquivo application.xml do EAR deve conter
<application>
<module>
<web>
<web-uri>mywebapp.war</web-uri>
<context-root>/myroot</context-root>
</web>
</module>
</application>

A aplicação agora é acessada via
http://servidor/myroot

6
Deployment e execução
Depende do servidor
No JBoss, copie o WAR ou EAR para o diretório deploy do
servidor para implantar o serviço. Remova o WAR para
tirar o serviço do ar
No Tomcat, copie o WAR para o diretorio webapps e
reinicie o servidor. Para remover o serviço, desligue o
Tomcat, apague o diretório criado e o WAR.

Para executar, as regras são as mesmas que uma
aplicação comum. Acesse o contexto raiz via Web
http://servidor/nome-do-contexto/
http://servidor/nome-do-contexto/index.jsp
http://servidor/nome-do-contexto/subcontexto/aplicacao
http://servidor/nome-do-contexto/servlet/pacote.Classe

7
Exercícios
1. Crie um alvo no Ant que gere WARs para todas as
aplicações que você já criou até o momento
2. Crie outro alvo que faça o deployment automático,
copiando o WAR para o diretório correto
Guarde as propriedades de deployment em um arquivo
externo build.properties para fácil alteração

3. Crie um alvo que faça o undeploy
Remova o diretório (com mesmo nome de contexto)
Remova o WAR

Esta última tarefa pode falhar caso o Tomcat esteja
no ar. Será preciso pará-lo antes (mas não crie uma
tarefa para isto)
8
helder@acm.org

argonavis.com.br
9

Contenu connexe

Tendances

Apresentação hotspot
Apresentação hotspotApresentação hotspot
Apresentação hotspotLincolm Aguiar
 
Percona XtraBackup
Percona XtraBackupPercona XtraBackup
Percona XtraBackupWebgoal
 
UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6Wagner Bianchi
 
ASP.NET Core 2.1 #dotnetconf
ASP.NET Core 2.1 #dotnetconfASP.NET Core 2.1 #dotnetconf
ASP.NET Core 2.1 #dotnetconfRodrigo Kono
 
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...Aryel Tupinambá
 
Alta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQLAlta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQLLeonardo Cezar
 
Tutorial Replicação Slony
Tutorial Replicação SlonyTutorial Replicação Slony
Tutorial Replicação SlonySofia Trindade
 
Yaf - Um framework que roda sob uma extensão
Yaf - Um framework que roda sob uma extensãoYaf - Um framework que roda sob uma extensão
Yaf - Um framework que roda sob uma extensãoThiago Paes
 
Escalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQEscalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQMatheus Fidelis
 
MySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationMySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationWagner Bianchi
 
Cloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceCloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceSaveincloud
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Felipe Blini
 

Tendances (20)

Apresentação hotspot
Apresentação hotspotApresentação hotspot
Apresentação hotspot
 
Zabbix livro para ubuntu
Zabbix livro para ubuntuZabbix livro para ubuntu
Zabbix livro para ubuntu
 
07 - Atividade III
07 - Atividade III07 - Atividade III
07 - Atividade III
 
Performance em Java
Performance em JavaPerformance em Java
Performance em Java
 
06 - Servidor Apache
06 - Servidor Apache06 - Servidor Apache
06 - Servidor Apache
 
Apache
ApacheApache
Apache
 
Percona XtraBackup
Percona XtraBackupPercona XtraBackup
Percona XtraBackup
 
05 servidor dhcp
05   servidor dhcp05   servidor dhcp
05 servidor dhcp
 
UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6
 
ASP.NET Core 2.1 #dotnetconf
ASP.NET Core 2.1 #dotnetconfASP.NET Core 2.1 #dotnetconf
ASP.NET Core 2.1 #dotnetconf
 
Linux - Servidor Web Apache
Linux - Servidor Web ApacheLinux - Servidor Web Apache
Linux - Servidor Web Apache
 
Zabbix 3 0-cinfotec
Zabbix 3 0-cinfotecZabbix 3 0-cinfotec
Zabbix 3 0-cinfotec
 
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
PHP Conference 2014: Uma string em dez milhões de documentos em menos de um s...
 
Alta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQLAlta disponibilidade com PostgreSQL
Alta disponibilidade com PostgreSQL
 
Tutorial Replicação Slony
Tutorial Replicação SlonyTutorial Replicação Slony
Tutorial Replicação Slony
 
Yaf - Um framework que roda sob uma extensão
Yaf - Um framework que roda sob uma extensãoYaf - Um framework que roda sob uma extensão
Yaf - Um framework que roda sob uma extensão
 
Escalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQEscalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQ
 
MySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationMySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source Replication
 
Cloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceCloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performance
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
 

En vedette (17)

JSP com tags padrão
JSP com tags padrãoJSP com tags padrão
JSP com tags padrão
 
Como criar Custom Tags
Como criar Custom TagsComo criar Custom Tags
Como criar Custom Tags
 
Servlets
ServletsServlets
Servlets
 
Sessões
SessõesSessões
Sessões
 
J2EE e Datasources
J2EE e DatasourcesJ2EE e Datasources
J2EE e Datasources
 
Fundamentos de arquitetura Web
Fundamentos de arquitetura WebFundamentos de arquitetura Web
Fundamentos de arquitetura Web
 
Segurança e Controle de errros
Segurança e Controle de errrosSegurança e Controle de errros
Segurança e Controle de errros
 
Filtros
FiltrosFiltros
Filtros
 
Tag Libraries e JSTL
Tag Libraries e JSTLTag Libraries e JSTL
Tag Libraries e JSTL
 
Java Server Pages
Java Server PagesJava Server Pages
Java Server Pages
 
Model View Controller
Model View ControllerModel View Controller
Model View Controller
 
Funmentos de Objetos Remotos
Funmentos de Objetos RemotosFunmentos de Objetos Remotos
Funmentos de Objetos Remotos
 
J530 12 transactions
J530 12 transactionsJ530 12 transactions
J530 12 transactions
 
Autenticação e Controle de Acesso
Autenticação e Controle de AcessoAutenticação e Controle de Acesso
Autenticação e Controle de Acesso
 
Integração com Banco de Dados
Integração com Banco de DadosIntegração com Banco de Dados
Integração com Banco de Dados
 
Padrões de Projeto J2EE para Aplicações Web
Padrões de Projeto J2EE para Aplicações WebPadrões de Projeto J2EE para Aplicações Web
Padrões de Projeto J2EE para Aplicações Web
 
Combinatorial software test design beyond pairwise testing
Combinatorial software test design beyond pairwise testingCombinatorial software test design beyond pairwise testing
Combinatorial software test design beyond pairwise testing
 

Similaire à J2EE WAR files

Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosDiego Santos
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntDenis L Presciliano
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntDenis L Presciliano
 
Atividade sistema operacionais
Atividade sistema operacionaisAtividade sistema operacionais
Atividade sistema operacionaisCarlos Melo
 
Ambiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntAmbiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntDenis L Presciliano
 
GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!Bruno Borges
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Strutseduan
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotationeduardo dias
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0Paulo Neto
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend frameworkMarcos Oliveira
 

Similaire à J2EE WAR files (20)

Maverick v1.0
Maverick v1.0Maverick v1.0
Maverick v1.0
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizados
 
Java 08
Java 08Java 08
Java 08
 
Apache Ant
Apache AntApache Ant
Apache Ant
 
Introdução ao Apache Ant
Introdução ao Apache AntIntrodução ao Apache Ant
Introdução ao Apache Ant
 
Apache Struts
Apache StrutsApache Struts
Apache Struts
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache Ant
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache Ant
 
Atividade sistema operacionais
Atividade sistema operacionaisAtividade sistema operacionais
Atividade sistema operacionais
 
Maven
MavenMaven
Maven
 
Introdução ao maven
Introdução ao mavenIntrodução ao maven
Introdução ao maven
 
Ambiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando AntAmbiente de Desenvolvimento Java usando Ant
Ambiente de Desenvolvimento Java usando Ant
 
Tutorial JSF 2.0 (2012)
Tutorial JSF 2.0 (2012)Tutorial JSF 2.0 (2012)
Tutorial JSF 2.0 (2012)
 
GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend framework
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 
Web Services
Web ServicesWeb Services
Web Services
 

Plus de Denis L Presciliano

Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsDenis L Presciliano
 
Coleções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsColeções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsDenis L Presciliano
 
Funcamentos de Programação Concorrente
Funcamentos de Programação ConcorrenteFuncamentos de Programação Concorrente
Funcamentos de Programação ConcorrenteDenis L Presciliano
 
Reuso com Herança e Composição
Reuso com Herança e ComposiçãoReuso com Herança e Composição
Reuso com Herança e ComposiçãoDenis L Presciliano
 
Tipos, literais, operadoes e controle de fluxo
Tipos, literais, operadoes e controle de fluxoTipos, literais, operadoes e controle de fluxo
Tipos, literais, operadoes e controle de fluxoDenis L Presciliano
 
Como usar a documentação da API Java 2
Como usar a documentação da API Java 2Como usar a documentação da API Java 2
Como usar a documentação da API Java 2Denis L Presciliano
 
Configuração do ambiente JEdit + Ant
Configuração do ambiente JEdit + AntConfiguração do ambiente JEdit + Ant
Configuração do ambiente JEdit + AntDenis L Presciliano
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em JavaDenis L Presciliano
 

Plus de Denis L Presciliano (20)

Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
 
Classes internas
Classes internasClasses internas
Classes internas
 
Entrada e Saída
Entrada e SaídaEntrada e Saída
Entrada e Saída
 
Coleções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsColeções Propriedade, Resources e Strings
Coleções Propriedade, Resources e Strings
 
Funcamentos de Programação Concorrente
Funcamentos de Programação ConcorrenteFuncamentos de Programação Concorrente
Funcamentos de Programação Concorrente
 
Testes de Unidade com JUnit
Testes de Unidade com JUnitTestes de Unidade com JUnit
Testes de Unidade com JUnit
 
Erros, exceções e asserções
Erros, exceções e asserçõesErros, exceções e asserções
Erros, exceções e asserções
 
Interfaces e Porlimosfismo
Interfaces e PorlimosfismoInterfaces e Porlimosfismo
Interfaces e Porlimosfismo
 
Reuso com Herança e Composição
Reuso com Herança e ComposiçãoReuso com Herança e Composição
Reuso com Herança e Composição
 
Pacotes e Encapsulamento
Pacotes e EncapsulamentoPacotes e Encapsulamento
Pacotes e Encapsulamento
 
Como criar classes e objetos
Como criar classes e objetosComo criar classes e objetos
Como criar classes e objetos
 
Tipos, literais, operadoes e controle de fluxo
Tipos, literais, operadoes e controle de fluxoTipos, literais, operadoes e controle de fluxo
Tipos, literais, operadoes e controle de fluxo
 
Como usar a documentação da API Java 2
Como usar a documentação da API Java 2Como usar a documentação da API Java 2
Como usar a documentação da API Java 2
 
Configuração do ambiente JEdit + Ant
Configuração do ambiente JEdit + AntConfiguração do ambiente JEdit + Ant
Configuração do ambiente JEdit + Ant
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em Java
 
Introdução a tecnologia Java
Introdução a tecnologia JavaIntrodução a tecnologia Java
Introdução a tecnologia Java
 
Fundamentos de Sockets
Fundamentos de SocketsFundamentos de Sockets
Fundamentos de Sockets
 
J530 15 workshop
J530 15 workshopJ530 15 workshop
J530 15 workshop
 
J530 14 xdoclet
J530 14 xdocletJ530 14 xdoclet
J530 14 xdoclet
 

J2EE WAR files

  • 1. Java 2 Enterprise Edition Componentes Web J2EE Helder da Rocha (helder@acm.org) www.argonavis.com.br 1
  • 2. Sobre este módulo Neste módulo conheceremos uma nova maneira de fazer deployment: arquivos WAR Com arquivos WAR pode-se colocar uma aplicação no ar, em muitos casos, simplesmente copiando o arquivo para um determinado local do servidor A criação de arquivos WAR é basicamente uma tarefa de copiar e compactar Usaremos o Ant para implantar as operações Reimplantar um arquivo WAR é simples no JBoss, mas é trabalhoso no Tomcat Requer a remoção do WAR e do diretório criado Requer o reinício do servidor por este motivo, continuaremos a copiar os arquivos para o servidor nos próximos módulos, apesar de criar o WAR 2
  • 3. Web Archive Utilizável no Tomcat e também em servidores J2EE Permite criação de novo contexto automaticamente Coloque JAR contendo estrutura de um contexto no diretório de deployment (webapps, no Tomcat) O JAR deve ter a extensão .WAR O JAR deve conter WEB-INF/web.xml válido Exemplo - aplicação: http://servidor/sistema/ arquivos.html, .jpg, .gif, .jsp, ... WEB-INF/ web.xml classes/ lib/ sistema.war 3
  • 4. Como criar um WAR O mesmo WAR que serve para o Tomcat, serve para o JBoss, Weblogic, WebSphere, etc. Todos aderem à mesma especificação Há várias formas de criar um WAR Usando o deploytool do Tomcat. Usando um aplicativo tipo WinZip Usando uma ferramenta JAR: jar -cf arquivo.war -C diretorio_base . Usando a ferramenta packager do kit J2EE: packager -webArchive <opções> Usando a tarefa <jar> ou <war> no Ant 4
  • 5. WAR criado pelo Ant Pode-se criar WARs usando a tarefa <jar> ou <war> Com <jar> você precisa explicitamente definir seus diretórios WEB-INF, classes e lib (usando um <zipfileset>, por exemplo) e copiar os arquivo web.xml, suas classes e libs. Com <war> você pode usar o atributo webxml, que já coloca o arquivo web.xml no lugar certo, e outros elementos de um war: <war warfile="bookstore.war" webxml="etc/metainf.xml"> <fileset dir="web" > <include name="*.html /> WEB-INF/web.xml <include name="*.jsp" /> raiz do WAR </fileset> <classes dir="${build}" > <include name="database/*.class" /> WEB-INF/classes </classes> <lib dir="${lib.dir}" /> WEB-INF/lib <webinf dir="${etc.dir}" /> </war> WEB-INF/ Veja o manual do Ant para outros exemplos e detalhes 5
  • 6. Configuração externa do WAR (servidores J2EE) Configuração externa ao WAR pode ser feita quando WAR é acrescentado em um arquivo EAR e funciona em servidores J2EE (JBoss, por exemplo) EAR é JAR comum com arquivo application.xml no seu META-INF O arquivo application.xml do EAR deve conter <application> <module> <web> <web-uri>mywebapp.war</web-uri> <context-root>/myroot</context-root> </web> </module> </application> A aplicação agora é acessada via http://servidor/myroot 6
  • 7. Deployment e execução Depende do servidor No JBoss, copie o WAR ou EAR para o diretório deploy do servidor para implantar o serviço. Remova o WAR para tirar o serviço do ar No Tomcat, copie o WAR para o diretorio webapps e reinicie o servidor. Para remover o serviço, desligue o Tomcat, apague o diretório criado e o WAR. Para executar, as regras são as mesmas que uma aplicação comum. Acesse o contexto raiz via Web http://servidor/nome-do-contexto/ http://servidor/nome-do-contexto/index.jsp http://servidor/nome-do-contexto/subcontexto/aplicacao http://servidor/nome-do-contexto/servlet/pacote.Classe 7
  • 8. Exercícios 1. Crie um alvo no Ant que gere WARs para todas as aplicações que você já criou até o momento 2. Crie outro alvo que faça o deployment automático, copiando o WAR para o diretório correto Guarde as propriedades de deployment em um arquivo externo build.properties para fácil alteração 3. Crie um alvo que faça o undeploy Remova o diretório (com mesmo nome de contexto) Remova o WAR Esta última tarefa pode falhar caso o Tomcat esteja no ar. Será preciso pará-lo antes (mas não crie uma tarefa para isto) 8