Guia para o aplicativo Tomcat Manager
1. Introdução
Neste tutorial, vamos dar uma olhada em profundidade no aplicativo Tomcat Manager.
Resumindo, o aplicativo Tomcat Manager éa web application that is packaged with the Tomcat servere fornece a funcionalidade básica de que precisamos para gerenciar nossos aplicativos da web implantados.
Como veremos, o aplicativo possui muitos recursos e serviços. Além de nos permitir gerenciar aplicativos implantados, também podemos ver o status e a configuração do servidor e de seus aplicativos.
2. Instalando o Tomcat
Antes de nos aprofundarmos no Tomcat Manager App, primeiro precisamos instalar um servidor Tomcat.
Felizmente, a instalação do Tomcat é um processo fácil. Consulte nosso guiaIntroduction to Apache Tomcat para obter ajuda na instalação do Tomcat. Neste tutorial, usaremos osTomcat 9 version mais recentes.
3. Acessando o aplicativo Tomcat Manager
Agora, vamos dar uma olhada em como usar o aplicativo Tomcat Manager. Temos duas opções aqui - podemos optar por usar o aplicativo baseado na Web (HTML) ou o serviço da Web baseado em texto.
O serviço baseado em texto é ideal para scripts, enquanto o aplicativo HTML é projetado para humanos.
Oweb-based application is available at:
-
http[s]://
: /manager/html/
Enquanto otext service is available at: correspondente
-
http[s]://
: /manager/text/
No entanto, antes de podermos acessar esses serviços, precisamos configurar o Tomcat. Por padrão, ele só pode ser acessado por usuários com as permissões corretas.
Vamos adicionar esses usuários editando o arquivoconf/tomcat-users:
Como podemos ver, adicionamos dois novos usuários:
-
tomcatgui - tem a funçãomanager-gui e pode usar o aplicativo baseado na web
-
tomcattext - tem a funçãomanager-script e pode usar o serviço da web baseado em texto
Na próxima seção, veremos como podemos usar esses dois usuários para demonstrar os recursos do aplicativo Tomcat Manager.
4. Listando aplicativos atualmente implantados
Nesta seção, aprenderemos como ver uma lista dos aplicativos implantados atualmente.
4.1. Usando a Web
Vamos abrirhttp://localhost:8080/manager/html/ para visualizar a página do aplicativo Tomcat Manager. Precisamos nos autenticar como o usuáriotomcatgui para fazer isso.
Uma vez logado, a página da web lista todos os aplicativos implantados na parte superior da página. Para cada aplicativo, podemos ver se está em execução ou não, o caminho do contexto e o número de sessões ativas. Existem também vários botões que podemos usar para gerenciar os aplicativos:
4.2. Usando o serviço de texto
Como alternativa, podemos listar todos os aplicativos implementados usando o serviço da web de texto. Desta vez, fazemos uma solicitaçãocurl usando o usuáriotomcattext para autenticar:
curl -u tomcattext:example http://localhost:8080/manager/text/list
Assim como a página da web, a resposta mostra todos os aplicativos implementados com seu estado atual e número de sessões ativas. Por exemplo, podemos ver que o aplicativomanager está em execução e tem uma sessão ativa:
OK - Listed applications for virtual host [localhost]
/:running:0:ROOT
/examples:running:0:examples
/host-manager:running:0:host-manager
/manager:running:1:manager
/docs:running:0:docs
5. Gerenciando aplicativos
Uma das principais funcionalidades que o aplicativo Tomcat Manager nos permite fazer é parar, iniciar e recarregar aplicativos.
5.1. Usando a Web
No caso do aplicativo da web, interromper e iniciar os aplicativos é apenas uma questão de clicar nos botões da página da web. O resultado e quaisquer problemas são relatados no campo de mensagem na parte superior da página.
5.2. Usando o serviço de texto
Da mesma forma, podemos parar e iniciar aplicativos usando o serviço de texto. Vamos parar e iniciar o aplicativoexamples usando uma solicitaçãocurl:
curl -u tomcattext:example http://localhost:8080/manager/text/stop?path=/examples
OK - Stopped application at context path [/examples]
curl -u tomcattext:example http://localhost:8080/manager/text/start?path=/examples
OK - Started application at context path [/examples]
O parâmetro de consultapath indica qual aplicativo gerenciar e deve corresponder ao caminho de contexto do aplicativo.
Também podemos recarregar aplicativos para captar alterações em classes ou recursos. No entanto, isso funciona apenas para aplicativos descompactados em um diretório e não implementados como arquivos WAR.
Aqui está um exemplo de como podemos recarregar o aplicativodocs usando o serviço de texto:
curl -u tomcattext:example http://localhost:8080/manager/text/reload?path=/docs
OK - Reloaded application at context path [/docs]
Lembre-se, porém, precisamos apenas clicar no botão recarregar para obter o mesmo no aplicativo da web.
6. Sessões expiradas
Além de gerenciar aplicativos, podemosmanage user sessions. O Tomcat Manager App mostra detalhes sobre as sessões atuais do usuário e permite expirar as sessões manualmente.
6.1. Através da interface da Web
Podemos visualizar as sessões atuais do usuário seguindo o link na colunaSessions para todos os aplicativos listados.
No exemplo abaixo, podemos ver que há duas sessões de usuário para a aplicaçãomanager. Ele mostra a duração da sessão, quanto tempo ficou inativa e quanto tempo até que expire (30 minutos por padrão).
Também podemos destruir manualmente as sessões selecionando-as e escolhendoInvalidate selected sessions:
Na página inicial, há um botão paraExpire sessions. Isso também destrói as sessões que ficaram inativas pelo período especificado de minutos.
6.2. Por meio do serviço da Web de texto
Novamente, os equivalentes do serviço de texto são diretos.
Para visualizar detalhes nas sessões atuais do usuário, chamamos o endpointsession com o caminho de contexto do aplicativo no qual estamos interessados. Neste exemplo, podemos ver que atualmente há duas sessões para o aplicativomanager:
curl -u tomcattext:example "http://localhost:8080/manager/text/sessions?path=/manager"
OK - Session information for application at context path [/manager]
Default maximum session inactive interval is [30] minutes
Inactive for [2 - <3] minutes: [1] sessions
Inactive for [13 - <14] minutes: [1] sessions
Se quisermos destruir sessões de usuário inativas, usamos o endpointexpire. Neste exemplo, expiramos as sessões que ficaram inativas por mais de 10 minutos para o aplicativomanager:
curl -u tomcattext:example "http://localhost:8080/manager/text/expire?path=/manager&idle=10"
OK - Session information for application at context path [/manager]
Default maximum session inactive interval is [30] minutes
Inactive for [5 - <6] minutes: [1] sessions
Inactive for [15 - <16] minutes: [1] sessions
Inactive for [>10] minutes: [1] sessions were expired
7. Implantando aplicativos
Agora que vimos como podemos gerenciar nossos aplicativos, vamos ver como podemos implantar novos aplicativos.
Para começar, baixe o WAR do Tomcatsample para que tenhamos um novo aplicativo para implantar.
7.1. Usando a Web
Agora, temos algumas opções para implantar nosso novo WAR de amostra usando a página da web. O método mais fácil éupload the sample WAR file and deploy it:
O WAR é implantado comcontext path matching the name of the WAR. Se for bem-sucedido, o aplicativo de amostra é implementado, iniciado e exibido na lista de aplicativos. Se seguirmos o link/sample no caminho do contexto, podemos visualizar nosso aplicativo de amostra em execução:
Para que possamos implantar o mesmo aplicativo novamente, vamos clicar no botãoUndeploy. Como o nome sugere, isso será undeploy the application. Observe que isso também exclui todos os arquivos e diretórios do aplicativo implantado.
Em seguida, podemosdeploy the sample WAR file by specifying the file path. Especificamos o caminho do arquivo URI para o arquivo WAR ou o diretório descompactado mais o caminho do contexto. Em nosso caso, o WAR de amostra está no diretório/tmp, e estamos configurando o caminho do contexto para/sample:
Alternativamente, podemos especificar ofile path to an XML deployment descriptor. Essa abordagem nos permite especificar atributos adicionais que afetam como o aplicativo é implantado e executado. No exemplo abaixo, estamos implementando o aplicativo WAR de amostra e tornando-o recarregável.
Observe queany path specified in the deployment descriptor is ignored. O caminho do contexto é obtido do nome do arquivo do descritor de implementação. Dê uma olhada emCommon Attributes para entender o porquê, bem como uma descrição de todos os outros atributos possíveis:
7.2. Usando o serviço de texto
Agora vamos dar uma olhada na implantação de aplicativos usando o serviço de texto.
Em primeiro lugar, vamosundeploy our sample application:
curl -u tomcattext:example "http://localhost:8080/manager/text/undeploy?path=/sample"
OK - Undeployed application at context path [/sample]
Paradeploy it again, especificamos o caminho do contexto e o URI do local do arquivo WAR de amostra:
curl -u tomcattext:example "http://localhost:8080/manager/text/deploy?path=/sample&war=file:/tmp/sample.war"
OK - Deployed application at context path [/sample]
Além disso, também podemos implantar um aplicativo usando o descritor de implantação XML:
curl -u tomcattext:example "http://localhost:8080/manager/text/deploy?config=file:/tmp/sample.xml"
OK - Deployed application at context path [/sample]
8. Visualizando a configuração SSL
Precisamosenable SSL in Tomcat antes de podermos ver qualquer configuração SSL. Primeiro, vamos criar um novo Keystore de certificado com um certificado autoassinado em nosso diretórioconf do Tomcat:
keytool -genkey -alias tomcat -keyalg RSA -keystore conf/localhost-rsa.jks
Em seguida, alteramos o arquivoconf/tomcat-server.xml para habilitar o conector SSL no Tomcat:
Depois de reiniciar o Tomcat, descobrimos que ele é executado com segurança na porta 8443!
8.1. Usando a Web
Vamos abrirhttps://localhost:8443/manager/html para ver o aplicativo Tomcat Manager novamente. Deve parecer exatamente o mesmo.
Agora podemos ver nossa configuração SSL usando os botões emDiagnostics:
-
O botãoCiphers mostra todas as cifras SSL compreendidas pelo Tomcat
-
Em seguida, o botãoCertificates mostra detalhes de nosso certificado autoassinado
-
Finalmente, o botãoTrusted Certificates mostra os detalhes do certificado CA confiável; em nosso exemplo, ele não exibe nada de interesse, pois não adicionamos nenhum certificado CA confiável
Além disso, os arquivos de configuração SSL podem ser recarregados dinamicamente a qualquer momento. Podemos recarregar por host virtual digitando o nome do host. Caso contrário, toda a configuração será relida:
8.2. Usando o serviço de texto
Da mesma forma, podemos obter as mesmas informações usando o serviço de texto. Podemos ver todos:
-
Cifras SSL usando o recursosslConnectorCiphers:
curl -ku tomcattext:example "https://localhost:8443/manager/text/sslConnectorCiphers"
-
Certificados usando o recursosslConnectorCerts:
curl -ku tomcattext:example "https://localhost:8443/manager/text/sslConnectorCerts"
-
Certificados confiáveis usando o recursosslConnectorTrustedCerts:
curl -ku tomcattext:example "https://localhost:8443/manager/text/sslConnectorTrustedCerts"
O SSLconfiguration can be re-loaded usando:
curl -ku tomcattext:example "https://localhost:8443/manager/text/sslReload"
OK - Reloaded TLS configuration for all TLS virtual hosts
Observe a opção-k no comandocurl, pois estamos usando um certificado autoassinado.
9. Visualizando o status do servidor
O aplicativo Tomcat Manager também nos mostra ostatus of the server and the deployed applications. Essas páginas são particularmente úteis quando queremos visualizar as estatísticas gerais de uso.
Se seguirmos o linkServer Status, exibido no canto superior direito, veremos os detalhes do servidor. O linkComplete Server Status mostra detalhes adicionais sobre os aplicativos:
Não há serviço de texto correspondente. No entanto, podemos modificar oServer Status link para visualizar o status do servidor em XML. Infelizmente, fazer o mesmo paraComplete Server Status link pode ou não funcionar, dependendo da versão do Tomcat que estivermos usando.
10. Salvando configuração
O serviço de texto nos permite salvar a configuração atual no Tomcatconf/server.xml. Isso é muito útil se alteramos a configuração e queremos salvá-la para uso posterior.
Felizmente, isso também faz backup dosconf/server.xml anteriores, embora quaisquer comentários anteriores possam ser removidos no novo arquivo de configuraçãoconf/server.xml.
No entanto, antes de podermos fazer isso, precisamos adicionar um novo ouvinte. Edite oconf/server.xml e adicione o seguinte ao final da lista de ouvintes existentes:
Depois de reiniciar o Tomcat, podemos salvar nossa configuração usando:
curl -u tomcattext:example "http://localhost:8080/manager/text/save"
OK - Server configuration saved
11. Diagnóstico
Por último, vejamos os recursos de diagnóstico adicionais fornecidos pelo aplicativo Tomcat Manager.
11.1. Despejo de Thread
Podemos usar o serviço de texto para obter umthread dump of the running Tomcat server:
curl -u tomcattext:example "http://localhost:8080/manager/text/threaddump"
OK - JVM thread dump
2019-10-06 23:19:10.066
Full thread dump Java HotSpot(TM) 64-Bit Server VM (11.0.3+12-LTS mixed mode):
...
Isso é particularmente útil quando precisamos analisar ou localizar threads que estão causando problemas de desempenho, como threads de execução longa ou com deadlock.
11.2. Localizando vazamentos de memória
O Tomcat geralmente faz um bom trabalho para evitar vazamentos de memória. Porém, quando suspeitamos de um vazamento de memória, o Tomcat Manager App possui um serviço de detecção de vazamento de memória para nos ajudar. Ele executa uma coleta de lixo completa e detecta todas as classes ainda residentes na memória desde a última vez que o aplicativo foi recarregado.
Precisamos apenas executar o botãoFind Leaks na página da web para detectar vazamentos.
Da mesma forma, o serviço de texto pode executar a detecção de vazamento de memória:
curl -u tomcattext:example "http://localhost:8080/manager/text/findleaks?statusLine=true"
OK - No memory leaks found
11.3. Exibindo recursos disponíveis
O serviço de texto fornece uma lista de recursos disponíveis. Neste exemplo, vemos que temos um banco de dados na memória disponível:
curl -u tomcattext:example "http://localhost:8080/manager/text/resources"
OK - Listed global resources of all types
UserDatabase:org.apache.catalina.users.MemoryUserDatabase
12. Conclusão
Neste artigo, analisamos detalhadamente o aplicativo Tomcat Manager. Começamos instalando o aplicativo e vendo como conceder acesso configurando permissões para dois usuários distintos.
Em seguida, exploramos vários exemplos usando o aplicativo baseado na Web e o serviço Web baseado em texto. Vimos como poderíamos visualizar, gerenciar e implantar aplicativos usando uma variedade de métodos. Então, demos uma olhada em como visualizar a configuração e o status do servidor.
Para saber mais sobre o aplicativo Tomcat Manager, verifique odocumentation online.