Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Só é possível utilizar debug remoto habilitando o JPDA ?

Caros,

No exemplo apresentado pelo professor, conseguimos subir o tomcat em um modo permitido para debug remoto usando o comando:

./catalina.sh jpda start

Porém muitas das vezes em uma ambiente produtivo ou de QA, não temos acesso para fazer essa modificação. Só conseguimos utilizar o modo debug remoto habilitando o

jpda ?

Como faríamos para habilitar o modo debug remoto utilizando o servidor JBOSS ?

1 resposta
solução!

Oi Jonathan! Tudo bem?

Excelente pergunta. A resposta é SIM. Só é possível fazer debug remoto com o Tomcat usando JPDA.

O que acontece é o seguinte em se trabalhando com investigações em ambientes de QA, UAT e PROD, Não se faz DEBUG diretamente no ambiente.

Isso porque, imagine assim, você colocou um breakpoint em uma classe, para saber o valor de uma variável, correto?

Só que o ambiente web possui concorrência e diversos usuários podem estar utilizando o server e passando por seu breakpoint.

Isso deixaria todo mundo concorrendo com seu breakpoint e isso geraria um:

1) O consumo de memória do seu servidor de aplicação vai explodir (aumento significativo)

2) Você não consegue garantir que quem parou no seu breakpoint foi sua chamada ou outro usuário utilizando o mesmo serviço.

3) Você prejudica o ambiente de produção, gerando uma terrível experiência para seu cliente. Também atrapalha o trabalho de quem está testando a aplicação em QA e UAT.

Caso tenha entendido, colco o que são práticas de mercado para resolver problemas nesses ambientes.

1) Colocar a versão de produção em seu ambiente local para reproduzir o erro de código fonte.

2) Colocar a versão de produção em um servidor isolado ( que mais ninguém acessa), com um banco de dados replicado para testar possíveis problemas relacionados com dados.

3) Não sendo possível, solicitar a equipe de infra por um dos nodes de produção, segregado, e isolado que subirá com JPDA para investigação em ambiente produtivo.

Você deve estar pensando: Quanto trabalho para testar? Eu concordo!

Por isso é altamente recomendável que os ambientes sejam sempre o mais parecidos o possível entre si. QA, UAT e PROD, de forma que só se corrige erros em PROD, uma vez que não fosse possível reproduzir em QA e UAT. Só se corrige erros em UAT, uma vez que não foi possível corrigir em QA, e só se corrige em QA, uma vez que não foi possível reproduzir o erro localmente.

Espero ter ajudado,

Abraço e sucesso,

Rodrigo