org.kapott.hbci.server
Interface ServerCallback


public interface ServerCallback

Schnittstelle für die Reaktion auf Ereignisse. Dieses Interface muss von der HBCI-Server-Anwendung implementiert werden, um auf Ereignisse zu reagieren, die vom HBCI4Java-Server-Code erzeugt werden. Zur Zeit gibt es nur zwei "Ereignisse": die Ausgabe einer Log-Information und das Eintreffen eines Auftragssegmentes innerhalb einer Kundennachricht. Später werden hier noch mehr Callbacks zu finden sein, so zum Beispiel für das Ereignis "Nutzer hat neue Schlüssel eingereicht" (wird zur Zeit völlig transparent vom HBCI4Java-Server-Code behandelt)

In der Regel ist beim Auftreten eines solchen Callbacks der Kernel-Parameter connection.id (kann mit HBCIUtils.getParam("connection.id") ermittelt werden) auf einen Wert gesetzt, der für jede Client-Verbindung eindeutig ist. Damit können also alle Callbacks, die zu einer Client-Verbindung gehören, auch als solche erkannt werden (z.B. um die Logausgaben pro HBCI-Session in separate Dateien zu schreiben, kann der Wert dieses Parameters als Teil des Dateinamens für die jeweilige Log-Datei verwendet werden). Ausnahme sind einige log-Callbacks, die von einem "allgemeineren" Teil des HBCI-Server-Frameworks generiert werden (Initialiserung, Warten auf Verbindungen, usw.) und die keiner bestimmten Client-Connection zugeordnet sind. In diesem Fall liefert die Abfrage von connection.id null.

Es ist zu beachten, dass alle hier aufgeführten Callbacks aus mehreren Threads gleichzeitig aufgerufen werden können, d.h. diese Methoden müssen auf jeden Fall thread-safe implementiert werden. Es wird je Client-Connection ein separater Thread gestartet, jeder dieser Threads kann unabhängig von den anderen (und *nicht* vom HBCI-Server-Framework synchronisiert) diese Callback-Methoden aufrufen.


Method Summary
 void handleGV(JobContext context)
          Wird beim Eintreffen eines Auftragssegmentes aufgerufen.
 void log(String msg, int level, java.util.Date date, StackTraceElement trace)
          HBCI-Server-Code hat Log-Ausgabe erzeugt.
 

Method Detail

handleGV

public void handleGV(JobContext context)
Wird beim Eintreffen eines Auftragssegmentes aufgerufen. Dieser Callback wird genau einmal für jedes Auftragssegment einer eingegangenen Kunden-Nachricht aufgerufen. Als "Auftragssegmente" werden alle die Segmente verstanden, die Auftragsdaten für einen HBCI-Geschäftsvorfall enthalten (Einreichen einer neuen Überweisung, Abfrage von Saldoinformationen, usw.). context enthält Informationen über den aktuellen Dialog (Kunden-ID usw.) sowie die eigentlichen Auftragsdaten. Die Rückgabedaten für diesen Auftrag (Auftragsdaten, Fehlermeldungen) werden von der HBCI-Server-Anwendung ebenfalls über dieses context-Objekt an den HBCI4Java-Server-Code übergeben. Das context-Objekt stellt also die eigentliche Schnittstelle zwischen der HBCI-Anwendung und dem HBCI4Java-Sever-Code dar.

Parameters:
context - enthält Informationen zum eingegangenen Auftrag und dient zur Speicherung der Antwortdaten

log

public void log(String msg,
                int level,
                java.util.Date date,
                StackTraceElement trace)

HBCI-Server-Code hat Log-Ausgabe erzeugt. Die Argumente dieser Methode sind äquivalent zu denen aus HBCICallback.log(). Tatsächlich stammen sie auch aus genau dieser Methode. Die hier auflaufenden Meldungen betreffen Server-interne Details und sind praktisch nur für Debugging-Zwecke nutzbar.

Soll das Backend-System der Bank auf bestimmte Ausgaben reagieren, so könnte dieses Verhalten zwar als quick-and-dirty hack erst mal implementiert werden, besser ist es aber, das jeweilige Ereignis als "richtigen" Callback zu behandeln (dann muss natürlich eine entsprechende Methode in diesem Interface definiert sein). Grund ist, dass die Log-Ausgaben nicht als offizielles API zu verstehen sind und sich jederzeit ändern können, deshalb ist eine Reaktion auf bestimmte Log-Ausgaben nicht zu empfehlen.