Tutorial: Depurar uma aplicação Java implementada num cluster do Service Fabric local
Este tutorial é a segunda parte de uma série. Saiba como anexar um depurador remoto com o Eclipse para a aplicação Service Fabric. Além disso, saiba como redirecionar registos das aplicações em execução para uma localização conveniente para o programador.
Nesta série de tutoriais, ficará a saber como:
- Criar uma aplicação Java Service Fabric Reliable Services
- Implementar e depurar a aplicação num cluster local
- Implementar a aplicação num cluster do Azure
- Configurar a monitorização e os diagnósticos da aplicação
- Configurar CI/CD
Na segunda parte da série, saiba como:
- Implementar a aplicação Java com o Eclipse
- Redirecionar os registos para uma localização configurável
Pré-requisitos
Antes de começar este tutorial:
- Configure o ambiente de desenvolvimento para Mac ou Linux. Siga as instruções para instalar o plug-in do Eclipse, Gradle, o SDK do Service Fabric e a CLI do Service Fabric (sfctl).
Transferir a aplicação de votação de exemplo
Se não conseguiu criar a aplicação de votação de exemplo na primeira parte desta série de tutoriais, pode transferi-la. Numa janela do comando, execute o seguinte comando para clonar o repositório da aplicação de exemplo para o seu computador local.
git clone https://github.com/Azure-Samples/service-fabric-java-quickstart
Crie e implante o aplicativo no cluster de desenvolvimento local.
Implementar a aplicação Java com o Eclipse
Abra o Eclipse IDE em sua máquina e clique em Arquivo -> Importar....
Na janela pop-up, selecione a opção Geral -> Projetos existentes no espaço de trabalho e pressione Avançar.
Na janela Importar Projetos, selecione a opção Selecionar diretório de raiz e selecione o diretório Voting. Se seguiu o tutorial da primeira série, o diretório Voting está no diretório Eclipse-workspace.
Atualize entryPoint.sh do serviço que quer depurar para iniciar o processo de Java com parâmetros de depuração remota. Para este tutorial, o front-end sem estado é usado: Voting/VotingApplication/VotingWebPkg/Code/entryPoint.sh. A porta 8001 está definida para depuração neste exemplo.
java -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n -Djava.library.path=$LD_LIBRARY_PATH -jar VotingWeb.jar
Atualize o Manifesto da Aplicação ao definir o número de instâncias ou de réplicas para o serviço que está a ser depurado como um. Esta definição evita conflitos na porta utilizada para depuração. Por exemplo, para serviços sem estado, defina
InstanceCount="1"
e para serviços com estado, defina os tamanhos de destino e de réplica mínimos como 1 da seguinte forma:TargetReplicaSetSize="1" MinReplicaSetSize="1"
.No IDE do Eclipse, selecione Executar -> Depurar configurações -> Aplicação Java remota, pressione o botão Novo , defina as propriedades da seguinte forma e clique em Aplicar.
Name: Voting Project: Voting Connection Type: Standard Host: localhost Port: 8001
Coloque um ponto de interrupção na linha 109 do ficheiro Voting/VotingWeb/src/statelessservice/HttpCommunicationListener.java.
No Explorador de Pacotes, clique com o botão direito do mouse no projeto Votação e clique em Service Fabric -> Publicar Aplicativo ...
Na janela Publish Application, selecione Local.json na lista pendente e clique em Publish (Publicar).
No IDE do Eclipse, selecione Executar -> Depurar configurações -> Aplicação Java remota, clique na configuração de votação que você criou e clique em Depurar.
Vá para o seu navegador da Web e acesse localhost:8080. Isso atingirá automaticamente o ponto de interrupção e o Eclipse entrará na perspetiva de Depuração.
Agora você pode aplicar essas mesmas etapas para depurar qualquer aplicativo do Service Fabric no Eclipse.
Redirecionar os registos de aplicações para uma localização personalizada
Os passos seguintes permitem saber como redirecionar os registos de aplicações da localização /var/log/syslog predefinida para uma localização personalizada.
Atualmente, os aplicativos executados em clusters Linux do Service Fabric suportam apenas a coleta de um único arquivo de log. Para configurar um aplicativo para que os logs sempre vão para /tmp/mysfapp0.0.log, crie um arquivo chamado logging.properties no seguinte local Voting/VotingApplication/VotingWebPkg/Code/logging.properties e adicione o seguinte conteúdo.
handlers = java.util.logging.FileHandler java.util.logging.FileHandler.level = ALL java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter # This value specifies your custom location. # You will have to ensure this path has read and write access by the process running the SF Application java.util.logging.FileHandler.pattern = /tmp/mysfapp0.0.log
Adicione o seguinte parâmetro em Voting/VotingApplication/VotingWebPkg/Code/entryPoint.sh para o comando de execução Java:
-Djava.util.logging.config.file=logging.properties
O exemplo a seguir mostra uma execução de exemplo com o depurador anexado, semelhante à execução na seção anterior.
java -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n -Djava.library.path=$LD_LIBRARY_PATH -Djava.util.logging.config.file=logging.properties -jar VotingWeb.jar
Nesta fase, aprendeu a depurar e aceder aos seus registos de aplicações ao programar as suas aplicações Java do Service Fabric.
Próximos passos
Nesta parte do tutorial, ficou a saber como:
- Implementar a aplicação Java com o Eclipse
- Redirecionar os registos para uma localização configurável
Avance para o tutorial seguinte: