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 criou a aplicação de exemplo de Voto 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 implemente a aplicação no cluster de desenvolvimento local.

Implementar a aplicação Java com o Eclipse

  1. Abra o IDE do Eclipse no seu computador e clique em Ficheiro –> Importar....

  2. Na janela de pop-up, selecione a opção Geral –> Projetos Existentes na Área de Trabalho e prima Seguinte.

  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. Neste tutorial, é utilizado o front-end sem estado: 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 –> Configurações de Depuração –> Aplicação Java Remota, prima 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 rato no projeto Voting e clique em Service Fabric –> Publicar Aplicação...

  9. Na janela Publicar a Aplicação, selecione Local.json na lista pendente e clique em Publicar.

  10. No IDE do Eclipse, selecione Executar –> Depurar Configurações – Aplicação> Java Remota, clique na configuração de Voto que criou e clique em Depurar.

  11. Aceda ao browser e aceda a localhost:8080. Esta ação irá atingir automaticamente o ponto de interrupção e o Eclipse entrará na perspetiva de Depuração.

Agora, pode aplicar estes mesmos passos para depurar qualquer aplicação 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, as aplicações em execução em clusters linux do Service Fabric só suportam a recolha de um único ficheiro de registo. Para configurar uma aplicação para que os registos vão sempre para /tmp/mysfapp0.0.log, crie um ficheiro com o nome logging.properties na seguinte localização 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 seguinte mostra uma execução de exemplo com o depurador anexado, semelhante à execução na secçã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.

Passos seguintes

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: