Partilhar via


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:

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

  1. Abra o Eclipse IDE em sua máquina e clique em Arquivo -> Importar....

  2. Na janela pop-up, selecione a opção Geral -> Projetos existentes no espaço de trabalho e pressione Avançar.

  3. 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.

  4. 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
    
  5. 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".

  6. 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
    
  7. Coloque um ponto de interrupção na linha 109 do ficheiro Voting/VotingWeb/src/statelessservice/HttpCommunicationListener.java.

  8. No Explorador de Pacotes, clique com o botão direito do mouse no projeto Votação e clique em Service Fabric -> Publicar Aplicativo ...

  9. Na janela Publish Application, selecione Local.json na lista pendente e clique em Publish (Publicar).

  10. 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.

  11. 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.

  1. 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
    
  2. 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: