Tutorial: Debuggen einer in einem lokalen Service Fabric-Cluster bereitgestellten Java-Anwendung
Dieses Tutorial ist der zweite Teil einer Reihe. Hier erfahren Sie, wie Sie mithilfe von Eclipse einen Remotedebugger für die Service Fabric-Anwendung anfügen. Außerdem erfahren Sie, wie Sie Protokolle von den ausgeführten Anwendungen an einen geeigneten Speicherort für den Entwickler umleiten.
In dieser Tutorialserie lernen Sie Folgendes:
- Erstellen einer Service Fabric Reliable Services-Java-Anwendung
- Bereitstellen und Debuggen der Anwendung in einem lokalen Cluster
- Bereitstellen der Anwendung in einem Azure-Cluster
- Einrichten der Überwachung und Diagnose für die Anwendung
- Richten Sie CI/CD ein.
Im zweiten Teil der Reihe lernen Sie Folgendes:
- Debuggen einer Java-Anwendung mithilfe von Eclipse
- Umleiten von Protokollen an einen konfigurierbaren Speicherort
Voraussetzungen
Bevor Sie mit diesem Tutorial beginnen können, müssen Sie Folgendes tun:
- Richten Sie Ihre Entwicklungsumgebung für Mac oder Linux ein. Führen Sie die erforderlichen Schritte aus, um das Eclipse-Plug-In, Gradle, das Service Fabric SDK und die Service Fabric-Befehlszeilenschnittstelle (sfctl) zu installieren.
Laden Sie die Beispielanwendung „Voting“ herunter.
Falls Sie die Beispielanwendung „Voting“ aus Teil 1 dieser Tutorialreihe nicht erstellt haben, können Sie sie herunterladen. Führen Sie in einem Befehlsfenster den folgenden Befehl aus, um das Beispiel-App-Repository auf Ihren lokalen Computer zu klonen.
git clone https://github.com/Azure-Samples/service-fabric-java-quickstart
Erstellen Sie die Anwendung, und stellen Sie sie in einem lokalen Entwicklungscluster bereit.
Debuggen einer Java-Anwendung mithilfe von Eclipse
Öffnen Sie auf Ihrem Computer die Eclipse-IDE, und klicken Sie auf File -> Import...
Wählen Sie im Popup-Fenster die Option Allgemein -> Vorhandene Projekte in den Arbeitsbereich und klicken Sie auf Weiter.
Klicken Sie im Fenster „Import Projects“ (Projekte importieren) auf Select root directory (Stammverzeichnis auswählen), und wählen Sie das Verzeichnis Voting aus. Wenn Sie den ersten Teil der Tutorialreihe absolviert haben, befindet sich das Verzeichnis Voting im Verzeichnis Eclipse-workspace.
Aktualisieren Sie „entryPoint.sh“ für den Dienst, den Sie debuggen möchten, sodass der Java-Prozess mit Remotedebugparametern gestartet wird. Für dieses Tutorial wird das zustandslose Front-End verwendet: Voting/VotingApplication/VotingWebPkg/Code/entryPoint.sh. In diesem Beispiel wurde für das Debuggen Port 8001 festgelegt.
java -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n -Djava.library.path=$LD_LIBRARY_PATH -jar VotingWeb.jar
Aktualisieren Sie das Anwendungsmanifest, indem die Instanz- oder Replikatanzahl für den zu debuggenden Dienst auf „1“ festlegen. Diese Einstellung vermiedet Konflikte an dem Port, der für das Debuggen verwendet wird. Legen Sie für zustandslose Dienste z.B.
InstanceCount="1"
und für zustandsbehaftete Dienste die Ziel- und Mindestgröße für Replikatgruppen wie folgt auf 1 fest:TargetReplicaSetSize="1" MinReplicaSetSize="1"
.Wählen Sie in der Eclipse-IDE Ausführen -> Debug-Konfigurationen -> Entfernte Java-Anwendung, drücken Sie die Schaltfläche Neu, stellen Sie die Eigenschaften wie folgt ein und klicken Sie auf Anwenden.
Name: Voting Project: Voting Connection Type: Standard Host: localhost Port: 8001
Fügen Sie in Zeile 109 der Datei Voting/VotingWeb/src/statelessservice/HttpCommunicationListener.java einen Breakpoint ein.
Klicken Sie im Paket-Explorer mit der rechten Maustaste auf das Projekt Abstimmung und klicken Sie auf Service Fabric -> Anwendung veröffentlichen ...
Wählen Sie im Fenster Publish Application (Anwendung veröffentlichen) in der Dropdownliste die Option Local.json aus, und klicken Sie auf Publish (Veröffentlichen).
Wählen Sie in der Eclipse-IDE Ausführen -> Debug-Konfigurationen -> Entfernte Java-Anwendung, klicken Sie auf die von Ihnen erstellte Konfiguration Abstimmen und klicken Sie auf Debug.
Navigieren Sie in Ihrem Webbrowser zu localhost:8080. Dadurch wird automatisch der Breakpoint erreicht, und Eclipse wechselt in die Debugging-Perspektive.
Sie können nun die gleichen Schritte ausführen, um eine beliebige Service Fabric-Anwendung in Eclipse zu debuggen.
Umleiten von Anwendungsprotokollen an einen benutzerdefinierten Speicherort
Die folgenden Schritte zeigen, wie Sie die Anwendungsprotokolle aus dem Standardspeicherort /var/log/syslog an einen benutzerdefinierten Speicherort umleiten.
Derzeit unterstützen Anwendungen, die in Service Fabric-Linux-Clustern ausgeführt werden, nur die Erfassung einer einzelnen Protokolldatei. Wenn Sie eine Anwendung so konfigurieren möchten, dass die Protokolle immer unter /tmp/mysfapp0.0.log gespeichert werden, erstellen Sie unter Voting/VotingApplication/VotingWebPkg/Code/logging.properties eine Datei namens „logging.properties“, und fügen Sie ihr folgenden Inhalt hinzu:
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
Fügen Sie in der Datei Voting/VotingApplication/VotingWebPkg/Code/entryPoint.sh den folgenden Parameter für den Java-Ausführungsbefehl hinzu:
-Djava.util.logging.config.file=logging.properties
Das folgende Beispiel zeigt eine Beispielausführung mit angefügtem Debugger. Sie ähnelt der Ausführung im vorherigen Abschnitt.
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
Sie wissen nun, wie Sie das Debugging durchführen und bei der Entwicklung von Service Fabric-Java-Anwendungen auf Ihre Anwendungsprotokolle zugreifen.
Nächste Schritte
In diesem Teil des Tutorials haben Sie Folgendes gelernt:
- Debuggen einer Java-Anwendung mithilfe von Eclipse
- Umleiten von Protokollen an einen konfigurierbaren Speicherort
Fahren Sie mit dem nächsten Tutorial fort: