É possível trocar a quente uma única classe manualmente com o Tomcat?

1

É possível recarregar uma única classe manualmente com o Tomcat 8 sem precisar reiniciar o servidor? Isso é para um ambiente de produção que eu estou falando, então não quero usar o reloadableatributo para conseguir isso. Ocasionalmente, talvez eu tenha uma atualização para uma única classe (ou duas) que eu gostaria que o tomcat reconhecesse.

Como é possível fazer isso com o reloadableatributo ou definindo recursos monitorados, eu esperava que também fosse possível disparar manualmente de alguma forma.

RTF
fonte

Respostas:

1

Se você substituir o arquivo de classe e o Tomcat já tiver carregado essa classe, será necessário acionar uma reimplantação do aplicativo Web para que a classe atualizada seja selecionada. A maneira mais simples de acionar isso é tocar no arquivo context.xml do aplicativo Web. Se não tiver um, existem outras opções. Consulte esta lista nos documentos do Tomcat: http://tomcat.apache.org/tomcat-8.0-doc/config/automatic-deployment.html#Modified_files

Mark Thomas
fonte
Tentei touching meu web.xml em um servidor de desenvolvimento, mas não houve recarga. Também tentei adicionar algo novo ao web.xml e salvá-lo, mas ainda sem recarregar. Você tem certeza sobre essa dica?
RTF
Desculpa. Você precisa reimplementar. Eu atualizei minha resposta.
214156 Mark
Para o registro, o recarregamento é efetivamente interrompido, seguido do início, enquanto a reimplantação é equivalente a remover o aplicativo Web e adicionar um novo. Algumas solicitações podem se perder se chegarem no meio da reimplantação.
Mark Thomas
Obrigado pela ajuda, mas decidi ir com o Tomcat Manager
RTF
0

No final, decidi ir com o Tomcat Manager . Estou usando a manager-scriptfuncionalidade do gerenciador (a GUI etc. está desativada) e limitando o acesso apenas ao host local. Eu envolvi um comando reload em um pequeno script de shell, assim:

#!/bin/bash
echo Reloading application now...
curl http://my-user:my-password@localhost:8080/manager/text/reload?path=/
echo Done.

Isso recarrega todo o aplicativo da web, o que eu acho que é bom para mim.

RTF
fonte