Como implantar um arquivo WAR no Tomcat

Como implantar um arquivo WAR no Tomcat

1. Visão geral

Apache Tomcat é um dos servidores da web mais populares na comunidade Java. Ele é enviado como umservlet container capaz de servir Web ARchives com a extensão WAR.

It provides a management dashboard a partir do qual você pode implantar um novo aplicativo da web ou remover a implantação de um existente sem precisar reiniciar o contêiner. Isso é especialmente útil em ambientes de produção.

Neste artigo, faremos uma rápida visão geral do Tomcat e abordaremos várias abordagens para implantar um arquivo WAR.

Leitura adicional:

Introdução ao Apache Tomcat

Um guia breve e prático para instalar e configurar o Apache Tomcat.

Read more

Implantar um WAR de inicialização Spring em um servidor Tomcat

Aprenda como configurar um aplicativo Spring Boot para ser implantado em um servidor Tomcat.

Read more

Alterando a porta HTTP do Tomcat para 80

Aprenda a configurar um servidor HTTP Apache Tomcat para executar na porta 80.

Read more

2. Estrutura Tomcat

Antes de começarmos, devemos nos familiarizar com algumas terminologias e variáveis ​​de ambiente.

2.1. variáveis ​​ambientais

Se você já trabalhou com o Tomcat antes, isso será muito familiar para você:

$CATALINA_HOME

Essa variável aponta para o diretório em que nosso servidor está instalado.

$CATALINA_BASE

Essa variável aponta para o diretório de uma instância específica do Tomcat; você pode ter várias instâncias instaladas. Se esta variável não for definida explicitamente, ela receberá o mesmo valor de$CATALINA_HOME.

Os aplicativos da Web são implantados no diretório$CATALINA_HOME\webapps.

2.2. Terminologia

Document root. Refere-se ao diretório de nível superior de um aplicativo Web, onde todos os recursos do aplicativo estão localizados como arquivos JSP, páginas HTML, classes Java e imagens.

Context path. Refere-se ao local que é relativo ao endereço do servidor e representa o nome do aplicativo da web.

Por exemplo, se nosso aplicativo da web for colocado no diretório$CATALINA_HOME\webapps\myapp, ele será acessado pela URLhttp://localhost/myapp, e seu caminho de contexto será/myapp.

WAR. É a extensão de um arquivo que empacota uma hierarquia de diretórios de aplicativos da Web no formato ZIP e é abreviação de Arquivo da Web. Os aplicativos da web Java geralmente são compactados como arquivos WAR para implementação. Esses arquivos podem ser criados na linha de comandos ou com um IDE como o Eclipse.

Depois de implementar nosso arquivo WAR, o Tomcat o descompacta e armazena todos os arquivos do projeto no diretóriowebapps em um novo diretório com o nome do projeto.

3. Configuração do Tomcat

O servidor da web Tomcat Apache é um software livre que pode serdownloaded from their website. É necessário que haja um JDK disponível na máquina do usuário e que a variável de ambienteJAVA_HOME esteja definida corretamente.

3.1. Inicie o Tomcat

Podemos iniciar o servidor Tomcat simplesmente executando o scriptstartup localizado em$CATALINA_HOMEin\startup. Há um.bate um.sh em cada instalação.

Escolha a opção apropriada, dependendo de você estar usando um sistema operacional Windows ou Unix.

3.2. Configurar funções

Durante a fase de implantação, teremos algumas opções, uma das quais é usar o painel de gerenciamento do Tomcat. Para acessar esse painel, precisamos ter um usuário administrador configurado com as funções apropriadas.

Para ter acesso ao painel, o usuário administrador precisa da funçãomanager-gui. Posteriormente, precisaremos implantar um arquivo WAR usando Maven, para isso também precisamos da funçãomanager-script.

Vamos fazer essas alterações em$CATALINA_HOME\conf omcat-users:



Mais detalhes sobre as diferentes funções do Tomcat podem ser encontrados seguindothis official link.

3.3. Definir permissões de diretório

Por fim, verifique se há permissão de leitura / gravação no diretório de instalação do Tomcat.

3.4. Instalação de teste

Para testar se o Tomcat está configurado corretamente, execute o script de inicialização (startup.bat /startup.sh), se nenhum erro for exibido no console, podemos verificar novamente visitandohttp://localhost:8080.

Se você vir a página de destino do Tomcat, instalamos o servidor corretamente.

3.5. Resolver conflito de portas

Por padrão, o Tomcat está configurado para escutar conexões na porta8080. Se houver outro aplicativo que já esteja vinculado a essa porta, o console de inicialização nos informará.

Para alterar a porta, podemos editar o arquivo de configuração do servidorserver.xml localizado em$CATALINA_HOME\conf\server.xml. Por padrão, a configuração do conector é a seguinte:

Por exemplo, se quisermos alterar nossa porta para8081, teremos que alterar o atributo da porta do conector da seguinte maneira:

Às vezes, a porta que escolhemos não é aberta por padrão; nesse caso, precisaremos abrir essa porta com os comandos apropriados no kernel Unix ou criar as regras de firewall apropriadas no Windows, como isso é feito além do escopo de Este artigo.

4. Implantar do Maven

Se quisermos usar o Maven para implantar nossos arquivos da web, devemos configurar o Tomcat como um servidor no arquivosettings.xml do Maven.

Existem dois locais onde o arquivosettings.xml pode ser encontrado:

  • A instalação do Maven:$\{maven.home}/conf/settings.xml

  • Instalação de um usuário:$\{user.home}/.m2/settings.xml

Depois de encontrá-lo, adicione o Tomcat da seguinte maneira:


    TomcatServer
    admin
    password

Agora, precisamos criar um aplicativo Web básico do Maven para testar a implantação. Vamos navegar até onde gostaríamos de criar o aplicativo.

Execute este comando no console para criar um novo aplicativo da web Java:

mvn archetype:generate -DgroupId=com.example -DartifactId=tomcat-war-deployment
  -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

Isso criará um aplicativo da web completo no diretóriotomcat-war-deployment que, se implementarmos agora e acessarmos por meio do navegador, imprimiráhello world!.

Porém, antes de fazer isso, precisamos fazer uma alteração para ativar a implantação do Maven. Então vá parapom.xmle adicione este plugin:


    org.apache.tomcat.maven
    tomcat7-maven-plugin
    2.2
    
        http://localhost:8080/manager/text
        TomcatServer
        /myapp
    

Observe que estamos usando o plug-in do Tomcat 7 porque ele funciona nas versões 7 e 8 sem alterações especiais.

A configuraçãourl é a url para a qual estamos enviando nossa implantação, o Tomcat saberá o que fazer com ela. O elementoserver é o nome da instância do servidor que o Maven reconhece. Finalmente, o elementopath define oscontext path de nossa implantação.

Isso significa que, se nossa implantação for bem-sucedida, acessaremos o aplicativo da web pressionandohttp://localhost:8080/myapp.

Agora podemos executar os seguintes comandos do Maven.

Para implantar o aplicativo Web:

mvn tomcat7:deploy

Para remover a implementação:

mvn tomcat7:undeploy

Para reimplementar após fazer alterações:

mvn tomcat7:redeploy

5. Implantar com o Cargo Plugin

Cargo é uma biblioteca versátil que nos permite manipular os vários tipos de contêineres de aplicativos de uma maneira padrão.

5.1. Configuração de implantação de carga

Nesta seção, veremos como usar o plug-in Maven do Cargo para implantar um WAR no Tomcat, neste caso, vamos implantá-lo em uma instância da versão 7.

Para ter um controle firme de todo o processo, começaremos do zero criando um novo aplicativo da web Java na linha de comando:

mvn archetype:generate -DgroupId=com.example -DartifactId=cargo-deploy
  -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

Isso criará um aplicativo da web Java completo no diretóriocargo-deploy. Se construirmos, implantarmos e carregarmos este aplicativo como está, ele imprimiráHello World! no navegador.

Diferentemente do plug-in Tomcat7 Maven, o plug-in Cargo Maven exige que esse arquivo esteja presente.

Como nosso aplicativo da web não contém servlets, nosso arquivoweb.xml será muito básico. Portanto, navegue até a pastaWEB-INF do nosso projeto recém-criado e crie um arquivoweb.xml com o seguinte conteúdo:




    cargo-deploy
    
        index.jsp
    

Para permitir que o Maven reconheça os comandos do Cargo sem digitar o nome totalmente qualificado, precisamos adicionar o plug-in Cargo Maven a um grupo de plug-ins emsettings.xml. do Maven

Como filho imediato do elemento root<settings></settings>, adicione este:


    org.codehaus.cargo

5.2. Implantação Local

Nesta subseção, editaremos nossopom.xml para atender aos nossos novos requisitos de implantação.

Adicione o plug-in da seguinte maneira:


    
        
            org.codehaus.cargo
            cargo-maven2-plugin
            1.5.0
            
                
                    tomcat7x
                    installed
                    Insert absolute path to tomcat 7 installation
                
                
                    existing
                    Insert absolute path to tomcat 7 installation
                
            
       
    

A versão mais recente, no momento da escrita, é1.5.0. No entanto, a versão mais recente sempre pode ser encontradahere.

Observe que definimos explicitamente o pacote como um WAR, sem isso, nossa compilação falhará. Na seção de plugins, adicionamos o plugin cargo maven2. Além disso,we add a configuration section where we tell Maven that we are using a Tomcat container and also an existing installation.

Ao definir o tipo de contêiner parainstalled, informamos ao Maven que temos uma instância instalada na máquina e fornecemos o URL absoluto para esta instalação.

Ao definir o tipo de configuração paraexisting, informamos ao Tomcat que temos uma configuração existente que estamos usando e nenhuma configuração adicional é necessária.

A alternativa seria instruir a carga a baixar e configurar a versão especificada, fornecendo um URL. No entanto, nosso foco está na implantação WAR.

É importante notar que, quer estejamos usando Maven 2.x ou Maven 3.x, o plug-in cargo maven2 funciona para ambos.

Agora podemos instalar nosso aplicativo executando:

mvn install

e implantando-o fazendo:

mvn cargo:deploy

Se tudo correr bem, devemos poder executar nosso aplicativo da web carregandohttp://localhost:8080/cargo-deploy.

5.3. Implementação Remota

Para fazer uma implantação remota, só precisamos alterar a seção de configuração de nossopom.xml. A implantação remota significa que não temos uma instalação local do Tomcat, mas temos acesso ao painel do gerente em um servidor remoto.

Então, vamos mudar opom.xml para que a seção de configuração fique assim:


    
        tomcat8x
        remote
    
    
        runtime
        
            admin
            admin
            http://localhost:8080/manager/text
              
        
    

Desta vez, mudamos o tipo de contêiner deinstalled pararemotee o tipo de configuração deexisting pararuntime. Por fim, adicionamos propriedades de autenticação e URL remotas à configuração.

Certifique-se de que as funções e usuários já estejam presentes em$CATALINA_HOME/conf/tomcat-users.xml como antes.

Se você estiver editando o mesmo projeto para a implantação deremote, primeiro desinstale o WAR existente:

mvn cargo:undeploy

limpe o projeto:

mvn clean

instale-o:

mvn install

finalmente, implante-o:

mvn cargo:deploy

É isso aí.

6. Implantar do Eclipse

O Eclipse nos permite incorporar servidores para adicionar a implantação de projetos da web no fluxo de trabalho normal sem sair do IDE.

6.1. Incorporar Tomcat no Eclipse

Podemos embutir uma instalação no eclipse selecionando o item de menuwindow na barra de tarefas e, em seguida,preferences no menu suspenso.

Encontraremos uma grade em árvore de itens de preferência no painel esquerdo da janela que aparece. Podemos então navegar paraeclipse → servers ou apenas digitarservers na barra de pesquisa.

Em seguida, selecionamos o diretório de instalação, se ainda não estiver aberto, e escolhemos a versão do Tomcat que baixamos.

No lado direito do painel, uma página de configuração aparecerá, onde selecionamos a opção Ativar para ativar esta versão do servidor e navegue até a pasta de instalação.

image

Aplicamos as mudanças e, da próxima vez que abrirmos a visualização dos servidores no submenuwindows → show view do Eclipse, o servidor recém-configurado estará presente e podemos iniciar, parar e implantar aplicativos nele.

6.2. Implantar aplicativo da Web no Tomcat integrado

Para implantar um aplicativo Web no Tomcat, ele deve existir em nosso espaço de trabalho.

Abra a visualizaçãoservers dewindow → show viewe procure os servidores. Quando aberto, podemos apenas clicar com o botão direito no servidor que configuramos e selecionaradd deployment no menu de contexto que aparece.

 

image

Na caixa de diálogoNew Deployment que aparece, abra a lista suspensaproject e selecione o projeto da web.

Há uma seçãoDeploy Type abaixo da caixa de combinaçãoProject quando selecionamosExploded Archive(development mode),our changes in the application will be synced live without having to redeploy, esta é a melhor opção durante o desenvolvimento, pois é muito eficiente.

image

 

SelecionarPackaged Archive(production mode) exigirá que reimplantemos toda vez que fizermos alterações e as virmos no navegador. Isso é melhor apenas para produção, mas ainda assim, o Eclipse facilita igualmente.

6.3. Implantar aplicativo da Web em local externo

Geralmente, optamos por implantar um WAR por meio do Eclipse para facilitar a depuração. Pode chegar um momento em que queremos implantá-lo em um local diferente daqueles usados ​​pelos servidores integrados do Eclipse. A instância mais comum é onde nosso servidor de produção está online e queremos atualizar o aplicativo Web.

Podemos ignorar esse procedimento implantando no modo de produção e observandoDeploy Location na caixa de diálogoNew Deployment e selecionando o WAR a partir daí.

Durante a implantação, em vez de selecionar um servidor embutido, podemos selecionar a opção<Externally Launched> na exibiçãoservers ao lado da lista de servidores embutidos. Navegamos até o diretóriowebapps de uma instalação externa do Tomcat.

7. Implantar do IntelliJ IDEA

Para implantar um aplicativo Web no Tomcat, ele deve existir e já foi baixado e instalado.

7.1. Configuração Local

Abra o menuRun e clique nas opçõesEdit Configurations.

 

image

No painel à esquerda, pesquiseTomcat Server, se não estiver lá, clique no sinal + no menu, pesquiseTomcate selecioneLocal. No campo de nome coloqueTomcat 7/8 (dependendo da sua versão).

image

 

Clique no botãoConfigure…e no campoTomcat Home navegue até o local inicial de sua instalação e selecione-o.

 

image

Opcionalmente, defina a páginaStartup comohttp://localhost:8080/eHTTP port: 8080, altere a porta conforme apropriado.

Vá para a guiaDeployment e clique no símbolo +, selecione o artefato que deseja adicionar ao servidor e clique em OK

 

image

 

7.2. Configuração Remota

Siga as mesmas instruções das configurações locais do Tomcat, mas na guia servidor, você deve inserir o local remoto da instalação.

8. Implantar por cópia de arquivo

Vimos como exportar um WAR do Eclipse. Uma das coisas que podemos fazer é implantá-lo simplesmente soltando-o no diretório$CATALINA_HOME\webapps de qualquer instância do Tomcat. Se a instância estiver em execução, a implantação será iniciada instantaneamente quando o Tomcat descompactar o arquivo morto e configurar seu caminho de contexto.

Se a instância não estiver em execução, o servidor implantará o projeto na próxima vez em que for iniciado.

9. Implantar a partir do Tomcat Manager

Supondo que já temos nosso arquivo WAR em mãos e gostaríamos de implantá-lo usando o painel de gerenciamento. Você pode acessar o painel do gerente visitando:http://localhost:8080/manager.

O painel tem cinco seções diferentes:Manager,Applications,Deploy,Diagnostics eServer Information. Se você for para a seçãoDeploy, você encontrará duas subseções.

9.1. Implantar diretório ou arquivo WAR localizado no servidor

Se o arquivo WAR estiver localizado no servidor onde a instância do Tomcat está sendo executada, podemos preencher o campoContext Path obrigatório precedido por uma barra “/”.

Digamos que desejamos que nosso aplicativo da web seja acessado a partir do navegador com a URLhttp://localhost:8080/myapp, então nosso campo de caminho de contexto terá/myapp.

Pulamos o campoXML Configuration file URL e vamos para o campoWAR or Directory URL. Aqui, inserimos o URL absoluto no arquivo Web ARchive, conforme exibido em nosso servidor. Digamos que a localização do nosso arquivo sejaC:/apps/myapp.war, então inserimos esta localização. Não se esqueça da extensão WAR.

Depois disso, podemos clicar no botãodeploy. A página será recarregada e devemos ver a mensagem:

OK - Deployed application at context path /myapp

no topo da página.

Além disso, nosso aplicativo também deve aparecer na seçãoApplications da página.

9.2. Arquivo WAR para implantação

Basta clicar no botãochoose file, navegar até o local do arquivo WAR e selecioná-lo e clicar no botãodeploy.

Nas duas situações, se tudo correr bem, o console do Tomcat nos informará que a implantação foi bem-sucedida com uma mensagem como a seguinte:

INFO: Deployment of web application archive \path\to\deployed_war has finished in 4,833 ms

10. Conclusão

Neste artigo, focamos na implantação de um WAR em um servidor Tomcat.