Bem pessoal, usamos Tomcat para as aplicações em produção aqui no trabalho e me deparei com o seguinte problema:
Minha aplicação possui arquivos .jars de frameworks desenvolvidos por nossa equipe, esses arquivos possuem também arquivos .xml, sql… quando alteramos estes e geramos um novo .jar o Tomcat não faz o reload da aplicação.
Tanto as sessões já abertas, como as próximas, deixam de funcionar até que eu restart o tomcat.
Tentei dar reload a paritr do Tomcat Web Application Manager mas nada só com restart.
Não posso estar restartando o tomcat pois estou em produção e um numero considerável de usuários são clientes.
O tomcat é o 5.5.17.
Agradeço desde já a ajuda
thiagoAraujo_al,
Se você parar a aplicação antes de substituir os arquivos vai dar certo, em seguida basta iniciar novamente o app na página do manager.
Abs,
thiagoAraujo_al, o tomcat tem um fenômeno que não consigo identificar. É o seguinte: todas as versões acima do 5.5.9, o comportamento das aplicações ao substituir o war é detonar a sessão de todos os usuários. É isso que acontece contigo? Não sei se isso é um comportamento que pode ser ajustado (já mudei tudo), mas a única versão que estabilizei esse “problema” foi na 5.5.9.
Por isso uso ela para o desenvolvimento (para produção é mais complicado porque você não deve ficar o tempo todo trocando a aplicação, até por possíveis conflitos de objetos serializados na sessão que dropam todo mundo.
Agora, o reload das classes da aplicação só se dá no manager. O uso do jBoss para produção, dica do frodrigues, a princípio parece muito trabalhosa, mas compensa. Você vai poder colocar as suas sessões num bd hsqldb, e isso é uma vantagem grande para a persistência da aplicação.
abraços,
otávio
Você recebe horas-extras e pode reiniciar o Tomcat à noite, ou de madrugada?
Há muitos problemas com reload de aplicações no Tomcat porque ele não foi exatamente feito para isso.
Se puder usar um servidor de aplicações certificado J2EE (como o JBoss) esses problemas serão minimizados (mas não eliminados - sempre tem alguma coisinha que pode implicar em reiniciar o servidor de aplicações).
vlw cmoreira já havia tentado isso e não funcionou.
otaviofcs
meu problema não é modificar o .war mas mudar .jars da aplicação. Detonar a sessão dos usuários correntes eu já esperaria… meu problema é alterar arquivos presentes no .jar(.xmls, .sqls) e após isso gerar novo jar e subistituir na aplicação. Nem usuarios correntes nem novos… eu estou precisando reiniciar o tomcat p/ voltar a funcionar…
Mudar p/ JBOSS, não é tão simples… a tempos se usa Tomcat em produção aqui na empresa.
Agradeço
Bom, mudar para o jBoss pode ser muito mais simples do que você imagina. Muito mesmo.
Pela sua descrição, o problema não parece ser que sua aplicação não dá o reload. O problema dos jars é que eles (função adivinhação ligada) devem ser carregados apenas uma vez no web.xml da inicialização (load on startup). Se for isso, você pode criar um método na administração da sua aplicação que recarregue os arquivos.
"Se for isso, você pode criar um método na administração da sua aplicação que recarregue os arquivos"
otaviofcs
Não compreendi bem o q otaviofcs quiz dizer… lembre os que arquivos são .jars, são bibliotecas e não são resources…
Agradeço a atenção