org.kapott.hbci.rewrite.package.html Maven / Gradle / Ivy
Show all versions of hbci4j-adorsys Show documentation
Rewriter-Module werden von HBCI4Java benutzt, um mit fehlerhaften
HBCI-Servern arbeiten zu können. Mit fehlerhaften HBCI-Servern sind Server gemeint,
die die HBCI-Spezifikation in bestimmten Punkten falsch oder gar nicht implementiert
haben. Da der HBCI4Java-Kernel streng spezifikationskonform implementiert
ist, würde es bei der Benutzung eines solchen Servers zu Fehlermeldungen und
zum Abbruch des Programmes kommen.
Einige möglicherweise auftretenden Fehler können Ihre Ursache auch tatsächlich
in einem Angriff auf die HBCI-Kommunikation haben (z.B. eine versuchte man-in-the-middle-Attacke).
Aus eben diesem Grund ist der eigentlichen HBCI-Kernel so implementiert, dass er
sämtliche Unstimmigkeiten mit entsprechenden Fehlermeldungen quittiert.
Einige auftretende Probleme haben aber ihre Ursache in fehlerhaft implementierten
HBCI-Servern. Sind solche permanent auftretenden Probleme bekannt, und ist keine
Aktualisierung der Server-Software möglich bzw. zu erwarten, so kann für das
jeweilige Problem ein Rewriter-Modul geschrieben werden.
Der Kernel von HBCI4Java arbeitet nur mit spezifikationskonformen
HBCI-Nachrichten und Dialogen. Erwartet ein HBCI-Server allerdings Nachrichten,
die von der Spezifikation abweichen (bzw. diese in einem besonders strengen Mass
interpretieren, so dass aus "KANN"-Bestimmungen in der Spez. auf einmal
"MUSS"- oder "DARF_NICHT"-Bestimmungen in den Analysemodules des Servers werden),
so kann die Nachricht vor dem eigentlichen Versenden durch ein entsprechendes
Rewriter-Modul geleitet werden, welches diese Nachricht so anpasst, dass der
HBCI-Server damit arbeiten kann.
Umgekehrt gilt das auch für eingehende Nachrichten: Diese sind in einigen Fällen
nicht spezifikationskonform. HBCI4Java würde beim Analysieren einer solchen
Nachricht mit einer Fehlermeldung abbrechen. Deshalb kann jede eingehende Nachricht
ebenfalls durch entsprechende Rewriter-Module geleitet werden, die dafür zuständig
sind, die "fehlerhafte" Nachricht in eine spezifikationskonforme Nachricht umzuwandeln,
so dass sie von HBCI4Java verarbeitet werden kann.
Die Schnittstelle für die Implementierung von Rewriter-Modulen wird an dieser
Stelle nicht als "offizielle" Schnittstelle dokumentiert, da sich hier wahrscheinlich
noch einige Änderungen ergeben. Vielmehr werden in HBCI4Java bereits einige
Rewriter-Module mitgeliefert. Tritt ein bestimmtes Problem mit einem HBCI-Server
auf, und liegt die Ursache dieses Problems tatsächlich in einem Fehler des HBCI-Servers,
so ist ein entsprechender Bugreport an den Autor zu schicken, so dass evtl. ein
entsprechendes Rewriter-Modul erzeugt werden kann.
Defaultmäßig sind alle hier aufgeführten Rewriter-Module aktiviert. Das hat i.d.R.
keine Konsequenzen, wenn alle verarbeiteten Nachrichten bereits HBCI-konform
sind (die Rewriter-Module belassen die Nachrichten dann in ihrer ursprünglichen Form).
Einziger Nachteil ist die zusätzliche Zeit, die die Analyse der Nachrichten in den
einzelnen Rewriter-Modulen benötigt. Vorteil dieses Verhaltens ist jedoch, dass die
Rewriter-Module nicht manuell aktiviert werden müssen (und somit auch nicht
vergessen werden können). Durch manuelles Setzen des Kernel-Parameters
kernel.rewriter
kann die Liste der aktiven Rewriter-Module jedoch
jederzeit manipuliert werden (siehe dazu auch Klassenbeschreibung der Klasse
HBCIUtils
).