Esercitazione: Eseguire il debug di un'applicazione Java distribuita in un cluster di Azure Service Fabric locale
Questa è la seconda di una serie di esercitazioni. Si apprenderà come collegare un debugger remoto usando Eclipse per l'applicazione Service Fabric. Si apprenderà anche come reindirizzare i log dalle applicazioni in esecuzione a un percorso pratico per lo sviluppatore.
In questa serie di esercitazioni si apprenderà come:
- Compilare un'applicazione Reliable Services di Service Fabric per Java
- Distribuire l'applicazione ed eseguirne il debug in un cluster locale
- Distribuire l'applicazione in un cluster di Azure
- Configurare il monitoraggio e la diagnostica per l'applicazione
- Configurare CI/CD
Nella seconda parte della serie si apprenderà come:
- Eseguire il debug di un'applicazione Java con Eclipse
- Reindirizzare i log a un percorso configurabile
Prerequisiti
Prima di iniziare questa esercitazione:
- Configurare l'ambiente di sviluppo per Mac o Linux. Seguire le istruzioni per installare il plug-in Eclipse, Gradle, Service Fabric SDK e l'interfaccia della riga di comando di Service Fabric (sfctl).
Scaricare l'applicazione di voto di esempio
Se l'applicazione di voto di esempio non è stata compilata nella parte 1 di questa serie di esercitazioni, è possibile scaricarla. In una finestra di comando eseguire il comando seguente per clonare il repository dell'app di esempio nel computer locale.
git clone https://github.com/Azure-Samples/service-fabric-java-quickstart
Compilare e distribuire l'applicazione nel cluster di sviluppo locale.
Eseguire il debug di un'applicazione Java con Eclipse
Aprire l'IDE di Eclipse nel computer e fare clic su File -> Importa
Nella finestra popup selezionare l'opzione Generale -> Progetti esistenti nell'area di lavoro e fare clic su Avanti.
Nella finestra Import Projects (Importa progetti) scegliere l'opzione Select root directory (Seleziona directory radice) e selezionare la directory Voting. Se è stata eseguita la prima serie di esercitazioni, la directory Voting si trova nella directory Eclipse-workspace.
Aggiornare l'elemento entryPoint.sh del servizio di cui eseguire il debug in modo che avvii il processo Java con i parametri di debug remoto. Per questa esercitazione viene usato il front-end senza stato Voting/VotingApplication/VotingWebPkg/Code/entryPoint.sh. In questo esempio la porta 8001 è impostata per il debug.
java -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n -Djava.library.path=$LD_LIBRARY_PATH -jar VotingWeb.jar
Aggiornare il manifesto dell'applicazione impostando il numero di istanze o di repliche per il servizio di cui eseguire il debug su uno. Questa impostazione evita che si verifichino conflitti per la porta usata per il debug. Per i servizi senza stato, ad esempio, impostare
InstanceCount="1"
, mentre per i servizi con stato impostare la destinazione e le dimensioni minime del set di repliche su 1 nel modo seguente:TargetReplicaSetSize="1" MinReplicaSetSize="1"
.Nell'IDE di Eclipse selezionare Esegui -> Configurazioni di debug -> Applicazione Java remota, fare clic sul pulsante Nuovo, impostare le proprietà come segue e fare clic su Applica.
Name: Voting Project: Voting Connection Type: Standard Host: localhost Port: 8001
Inserire un punto di interruzione nella riga 109 del file Voting/VotingWeb/src/statelessservice/HttpCommunicationListener.java.
In Esplora pacchetti fare clic con il pulsante destro del mouse sul progetto Voting e scegliere Service Fabric -> Pubblica applicazione
Nella finestra Publish Application (Pubblica applicazione) selezionare Local.json dall'elenco a discesa e fare clic su Publish (Pubblica).
Nell'IDE di Eclipse selezionare Esegui -> Configurazioni di debug -> Applicazione Java remota, fare clic sulla configurazione Voting creata e quindi su Debug.
Passare al Web browser e accedere a localhost:8080. In questo modo, verrà automaticamente raggiunto il punto di interruzione ed Eclipse potrà accedere alla prospettiva di debug.
A questo punto, è possibile applicare questi stessi passaggi per eseguire il debug di qualsiasi applicazione di Service Fabric in Eclipse.
Reindirizzare i log applicazioni a un percorso personalizzato
La procedura seguente illustra come reindirizzare i log applicazioni dal percorso /var/log/syslog predefinito a un percorso personalizzato.
Attualmente le applicazioni in esecuzione nei cluster Linux di Service Fabric supportano solo la selezione di un singolo file di log. Per configurare un'applicazione affinché i log vengano sempre inviati a /tmp/mysfapp0.0.log, creare un file denominato logging.properties nel percorso seguente Voting/VotingApplication/VotingWebPkg/Code/logging.properties e aggiungere il contenuto seguente.
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
Aggiungere il parametro seguente nel file Voting/VotingApplication/VotingWebPkg/Code/entryPoint.sh per il comando di esecuzione Java:
-Djava.util.logging.config.file=logging.properties
L'esempio seguente illustra un'esecuzione di esempio con il debugger collegato, in modo analogo all'esecuzione nella sezione precedente.
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
In questa fase si è appreso come eseguire il debug e l'accesso ai log applicazioni durante lo sviluppo di applicazioni Java di Service Fabric.
Passaggi successivi
In questa parte dell'esercitazione si è appreso come:
- Eseguire il debug di un'applicazione Java con Eclipse
- Reindirizzare i log a un percorso configurabile
Passare all'esercitazione successiva: