Für einzelne Porgrammteile – oder Prozesse – ist es notwendig, den Server in den Debugging-Modus zu versetzen, als Beispiel sei hier der Buchungsprozess genannt, der ja auf dem Server selbst abläuft.
Es gibt hier zwei Möglichkeiten, den Server zu debuggen:
a) über Shared Memory – auf dem Server selbst oder
b) über “Remote Socket Debugging” – die Methode, die ich hier aufführen möchte
Das Remote Socket Debugging geschieht serverseitig über eine Einstellung im JBOSS, clientseitig wird ECLIPSE so gestartet, dass es auf den Prozess wartet.
1) Einstellungen am Server
Im Adempiere-Verzeichnis finden Sie das Unterverzeichnis “jboss/bin” und hier die Datei “run.conf”. In dieser Datei sind die unteren zwei Einträge für Debugging-Einstellungen zuständig.:
# Sample JPDA settings for remote socket debuging
# JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y"
# Sample JPDA settings for shared memory debugging
#JAVA_OPTS="$JAVA_OPTS -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_shmem,server=y,suspend=n,address=jboss"
Der obere Eintrag enthält die notwendigen Daten für das Debugging über Socket, als Port ist hier 8787 angegeben.
WICHTIG: Wenn Sie auf dem Server eine Firewall laufen haben, müssen Sie diesen Port vor dem Debugging freigeben!!!
Geben Sie diesen frei, indem Sie das Kommentarzeichen “#” entfernen.
Starten Sie danach den Serverprozess neu über “RUN_Server2.sh” im Verzeichnis “utils” (aus dem Adempiere Stammverzeichnis).
Wenn Sie alles richtig eingestellt haben, dann wird der Aufruf gestoppt bei der Zeile: “Listening for transport …”
Damit ist der Server für das Debugging bereit.
2) Einstellungen ECLIPSE:
Rufen Sie zuerst den Sourcecode des betreffenden Moduls auf, in meinem Beispiel “org.compiere.acct.Doc_InOut.java” und setzten dort die Breakspoints, also die Punkte, an denen der Debugger anhalten soll.
Danach ruft man die Debug-Konfigurationen auf. Im Punkt “Remote Java Application” gibt man unter “Connect” zuerst das Projekt an, dann den Socket-Typ “Socket Attach” und unter “Connection Properties” die Adresse des Servers (IP oder auflösbarer Name) und den Socket (hier 8787) an.
Mit dem Button “Debug” wird das Debugging gestartet. Falls Sie in einem anderen Fenster die Anzeige des Servers laufen haben, bekommen Sie jetzt die restlichen Startmeldungen des Servers angezeigt, in ECLIPSE wählen Sie die Debugging-Anzeige aus (“Window” – “Open Perspective” – “Debug”). Dort sind die Symbole “Suspend” (Pause) und “Disconnect” (Verbindung trennen) aktiv.

Remote Debugging unter ECLIPSE
Rufen Sie jetzt von einer “normalen” Session aus den Programmpunkt auf, den Sie debuggen wollen, z.B. verbuchen eines Wareneinganges, und der Debugger hält am nächsten Breakpoint an:

Remote Debugging: angehalten am Breakpoint
Ab hier können Sie ganz normal den Prozess debuggen.