Ao conectar uma aplicação Java em execução no JDK 17 ao Application Real-Time Monitoring Service (ARMS), o console do ARMS pode não exibir dados de monitoramento. Esse problema ocorre quando a versão do agente do ARMS não oferece suporte ao JDK 17 ou quando uma dependência desatualizada da Servlet API interfere na lógica de instrumentação do agente.
Causa 1: A versão do agente do ARMS não oferece suporte ao JDK 17
O suporte ao JDK 17 foi introduzido na versão V2.8.3 do agente do ARMS. Se o agente for anterior à V2.8.3, ele não instrumentará aplicações em execução no JDK 17 e nenhum dado de monitoramento será coletado.
Requisitos de versão
|
Framework da aplicação |
Versão mínima do agente do ARMS |
|
JDK 17 (sem Spring Boot 3.0) |
V2.8.3 |
|
JDK 17 com Spring Boot 3.0 |
V2.9.1.2 |
O agente do ARMS V2.8.3 oferece suporte ao JDK 17, mas não é compatível com o Spring Boot 3.0. Como o Spring Boot 3.0 exige o JDK 17, caso sua aplicação utilize esse framework, atualize para o agente do ARMS V2.9.1.2 ou superior.
Solução
Atualize o agente do ARMS para a versão correspondente ao framework da sua aplicação. Para obter o procedimento de atualização, consulte a documentação de upgrade do agente do ARMS.
Verifique a correção
Reinicie a aplicação após a atualização.
Verifique nos logs de inicialização do agente do ARMS se a versão correta foi carregada. Procure uma entrada de log que contenha o número da versão do agente.
Abra o console do ARMS e acesse a página de monitoramento da sua aplicação.
Confirme se os dados de monitoramento aparecem em alguns minutos.
Causa 2: Dependência desatualizada da Servlet API causa instrumentação incorreta
A partir do Spring Boot 3.0, o Apache Tomcat integrado foi atualizado para o Tomcat 10, que utiliza a Servlet 5.0. Essa versão alterou o nome do pacote da Servlet API de javax para jakarta.
O agente do ARMS usa o nome do pacote da Servlet API para determinar onde aplicar a instrumentação. Se as dependências do POM da sua aplicação incluírem uma versão antiga da Servlet API (que utiliza o pacote javax) não utilizada pela aplicação, o agente detectará o nome do pacote errado e aplicará a instrumentação em javax em vez de jakarta. Consequentemente, a instrumentação não terá efeito e o console não exibirá dados de monitoramento.
Como verificar
Inspecione o arquivo pom.xml do seu projeto em busca de dependências da Servlet API que utilizem o namespace javax:
<!-- Example: stale dependency that causes the issue -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
Caso sua aplicação Spring Boot 3.0 inclua uma dependência como essa, mas não a utilize, o agente do ARMS poderá identificar incorretamente o alvo da instrumentação.
Solução
Escolha uma das seguintes abordagens:
Remova a dependência não utilizada da Servlet API. Exclua a dependência
javax.servletdo seupom.xmlse a aplicação não precisar dela. Isso permite que o agente do ARMS detecte corretamente o nome do pacotejakarta.Atualize o agente do ARMS para a V3.2.0 ou superior. A versão V3.2.0 do agente do ARMS corrige esse problema ao identificar corretamente o nome do pacote da Servlet API ativa, independentemente de dependências desatualizadas no POM. Para atualizar para a V3.2.0, envie um ticket.
Verifique a correção
Reinicie a aplicação após remover a dependência não utilizada ou atualizar o agente do ARMS.
Verifique nos logs de inicialização do agente do ARMS se o carregamento ocorreu com sucesso.
Abra o console do ARMS e acesse a página de monitoramento da sua aplicação.
Confirme se os dados de monitoramento, como traces e métricas, aparecem em alguns minutos.
Referência rápida
|
Sintoma |
Causa provável |
Correção |
|
Sem dados; agente do ARMS anterior à V2.8.3 |
O agente não oferece suporte ao JDK 17 |
Atualize para a V2.8.3 ou superior |
|
Sem dados; aplicação Spring Boot 3.0; agente do ARMS anterior à V2.9.1.2 |
O agente não oferece suporte ao Spring Boot 3.0 |
Atualize para a V2.9.1.2 ou superior |
|
Sem dados; aplicação Spring Boot 3.0; dependência desatualizada |
O agente aplica a instrumentação no nome de pacote errado |
Remova a dependência desatualizada ou atualize para a V3.2.0 ou superior |