Konfiguration des
JDBC-Empfänger-Adapters
Konfigurieren Sie den JDBC-Empfänger-Adapter, um damit XML-Messages vom Integration Server oder vom PCK in Inhalte von Datenbanktabellen umzuwandeln.
Die Adapterkonfiguration ist Teil der Festlegung eines Kommunikationskanals im Integration Server oder im PCK und wird auf dem Registerblatt Parametervorgenommen. Zusätzlich zur Adapterkonfiguration können auf der Registerkarte Module im Modul-Prozessor generische Module angegeben werden, die den Adapter mit Zusatzfunktionen ausstatten.
...
1. Sie haben einen Kommunikationskanal angelegt oder einen bestehenden Kommunikationskanal geöffnet.
2. Sie haben auf der Registerkarte Parameter den Adaptertyp JDBC ausgewählt.
3. Sie haben den Adapter über den Auswahlknopf Empfänger als Empfänger-Adapter definiert.
Zur Konfiguration des Adapters machen Sie folgende Angaben:
JBDC 2.0
● XML SQL-Format
Es können Tabellenwerte in einer oder mehreren Tabellen eingefügt, geändert oder gelöscht werden. In der Datenbank können vorhandene Stored Procedures mit Übergabeparametern aufgerufen werden. In synchronen Abfragen können auch Ergebnisse von Datenbankabfragen bzw. Rückgabewerte von Stored Procedures übertragen werden.
● Natives SQL-Format
Eine beliebige SQL-Anweisung wird als Message-Inhalt erwartet. Die Anweisung wird unverändert zur Verarbeitung an die Datenbank weitergegeben.
Abhängig vom gewählten Message-Protokoll erwartet der Adapter spezielle XML-Dokumentenformate in der Message vom Integration Server/vom PCK. Zu den Dokumentenformaten siehe unter: Dokumentenformate für den JDBC-Empfänger-Adapter.
Feld |
Eingabe |
JDBC-Treiber |
Java-Klasse des JDBC-Treibers, die der JDBC-Adapter laden muss, um auf den Treiber zugreifen zu können. Die Angabe variiert je nach JDBC-Treiber und muss aus den Unterlagen des jeweiligen Anbieters hervorgehen. |
Verbindung |
Adresse, unter der über den JDBC-Treiber eine Datenbankverbindung geöffnet werden kann. Die Angabe variiert je nach JDBC-Treiber und muss aus den Unterlagen des jeweiligen Anbieters hervorgehen. |
Benutzername |
Benutzername, unter dem Sie sich an der Datenbank anmelden. |
Kennwort |
Kennwort zur Anmeldung an der Datenbank mit Bestätigung |
Geben Sie die maximale Anzahl der Messages an, die parallel vom Empfängerkanal verarbeitet werden sollen. Wenn Sie beispielsweise den Wert 2 eingeben, werden zwei Messages parallel verarbeitet. Der Standardwert lautet 1, was bedeutet, dass immer nur eine Message vom Empfängerkanal verarbeitet wird.
Feld |
Eingabe |
Key-Tags erforderlich |
Setzen Sie das Kennzeichen, damit Bedingungen im Key-Tag zwingend vorhanden sein müssen. |
Interpretation von leeren String-Werten |
Hier können Sie angeben, wie leere Textfelder zu behandeln sind. ● NULL-Wert Bei INSERT- und UPDATE-Anweisungen werden leere Felder wie NULL-Felder behandelt (nicht vorhanden) und nicht in die Datenbank eingefügt. ● Leerer String Bei INSERT- und UPDATE-Anweisungen werden in die Spalten leere Texte eingefügt. |
Persistenz |
Erläuterung und weitere Eingaben |
Lokal |
Die Behandlung von Nachrichten des Typs Exactly Once erfolgt, wie bei den übrigen Adaptern auch, standardmäßig über die Verwaltung von Statusinformationen für diese Nachrichten im J2EE-Server. Auch in diesem Modus werden sämtliche Fehlerzustände des Adapters sowie extern eingeleitete Programmabbrüche korrekt behandelt. Eine Ausnahme hierzu bilden externe Programmabbrüche während eines Datenbank-Commit. Dann ist der Zustand der Nachrichtenverarbeitung unklar, da er erst nach Abschluss des Datenbank-Commit geändert werden kann. Eine solche Situation wird aber bei einem Neustart der Anwendung erkannt, und die Bearbeitung der abgebrochenen Nachrichtenverarbeitung kann über Konfliktauflösung gesteuert werden. Diese Angabe wirkt sich aber nur auf die Behandlung von Fehlern aus, die während einer wiederholten Bearbeitung von Nachrichten auftreten, deren erste Bearbeitung in dem oben beschriebenen unklaren Zustand verblieben war.
Konfliktauflösung ● Fehler Tritt bei erneuter Bearbeitung ein Fehler auf, wird dieser bei Auswahl von Error als Fehler an das rufende System zurückgemeldet. ● Wiederholen Tritt der Fehler aber auf, weil die Nachricht beim ersten Mal doch schon in der Datenbank gespeichert wurde und sich dort noch befindet (typischerweise wird die Datenbankschnittstelle dann den Fehler duplicate insert ausgeben, falls mindestens eines der Tabellenfelder als Primary Key definiert wurde), kann mit dem Wert Wiederholen die Bearbeitung für das sendende System erfolgreich abgeschlossen werden. Ansonsten wird das sendende System die Nachricht immer wieder erneut verschicken, und der Fehler tritt immer wieder auf. |
Datenbank |
Trotzdem verbleibt in der Behandlung von Exactly-Once eine sehr kleine Lücke: Ist in der Datenbanktabelle kein Feld Primärschlüssel ausgewiesen, oder wurden die Daten von einer anderen Anwendung bereits weiterverarbeitet und anschließend gelöscht, kann die Nachricht auf diese Weise dupliziert werden, wenn die erste Verarbeitung genau nach dem Datenbank-Commit durch ein irreguläres Beenden des J2EE-Server unterbrochen wurde. Diese Lücke kann nur geschlossen werden, wenn sich die Nachrichtenverarbeitung und die Verwaltung der Statusinformationen in der gleichen Datenbank befinden, sodass ein gemeinsamer Commit-Zyklus der Verarbeitungsschritte möglich wird. Hierzu muss in der Datenbank, in der die zu schreibende Tabelle liegt, eine zusätzliche Tabelle mit zwei Spalten angelegt werden. Zur Definition der Tabelle machen Sie folgende Angaben: ● Datenbanktabellenname Geben Sie den Namen der Tabelle an. ● Schlüsselspaltenname In diese Spalte der Tabelle wird der Schlüssel eingetragen. ● Wertspaltenname In diese Spalte der Tabelle wird der Schlüsselwert eingetragen. |
● Escape-Symbol für Apostroph
Das Apostrophzeichen (‘) ist in der SQL-Syntax ein reserviertes Zeichen und wird daher durch ein Escape-Zeichen ersetzt, wenn es innerhalb von Wertezeichenketten vorkommt. Diese Ersatzzeichen können datenbankabhängig sein. Typisch sind \’ oder ’’(Vorgabewert). Wird ein für die verwendete Datenbank ungültiges Zeichen verwendet, gibt der Adapter eine Fehlermeldung (SQL-Exception) zur SQL-Syntax aus, die von der Datenbank erzeugt wird.
● Spaltenname- Delimiter
Abhängig von der Datenbank können Spaltennamen von einem speziellen Abgrenzungszeichen (Delimiter) umschlossen sein, beispielsweise wenn sie Sonderzeichen enthalten dürfen (z.B. “). Dieses Zeichen kann hier angegeben werden. Voreingestellt ist kein Abgrenzungszeichen. Wird ein für die verwendete Datenbank ungültiges Zeichen verwendet, gibt der Adapter eine Fehlermeldung (SQL-Exception) zur SQL-Syntax aus, die von der Datenbank erzeugt wird.
● Befehlszeile
Geben Sie einen Betriebssystembefehl an, der nach erfolgreichen Datenbankoperationen ausgeführt wird.
● Zeitüberschreitung (Sek.)
Geben Sie hier die maximale Laufzeit des auszuführenden Programms in Sekunden an. Nach Ablauf der Zeitspanne fährt der Adapter mit der Verarbeitung fort. Das ausführbare Programm läuft im Hintergrund weiter.
● Programm nach Zeitüberschreitung beenden
Setzen Sie das Kennzeichen, wenn der Adapter nach Ablauf der Zeitüberschreitung das auszuführende Programm abbrechen soll.
Der Adapter schreibt die Ausgaben (STDOUT und STDERR) des Betriebssystembefehls in den System-Trace.

Die Message-Verarbeitung erfolgt unabhängig davon, ob bei der Ausführung eines konfigurierten Betriebssystembefehls ein Fehler auftritt.
Setzen Sie den Adapter auf Aktiv, um ihn für den Message-Austausch einzusetzen.
Um zusätzliche Parameter anzugeben, setzen Sie das Kennzeichen Erweiterter Modus.
Geben Sie an, wie oft im Fall einer SQL-Exception die Datenbankverbindung neu aufgebaut und der Zugriff wiederholt werden soll.
Ist die Anzahl der Wiederholungsversuche überschritten, wird der letzte Zustand an den sendenden Integration Server oder das sendende PCK gemeldet. Im Fehlerfall wird die Message erst dann erneut weiterverarbeitet, wenn sie vom Integration Server/vom PCK erneut versendet wird.
Datenbanktransaktionen können in verschiedenen Abstufungen (Isolationsstufen) betrieben werden. Die Isolationsstufe legt fest, wie parallel laufende Transaktionen sich gegenseitig beeinflussen. Die zur Auswahl stehenden Optionen entsprechen den JDBC-Konstanten:
● Standard (Standardeinstellung der jeweiligen Datenbank)
● Keine
● read_uncommited (schwächste Einstellung)
● read_committed
● repeatable_read
● serializable (stärkste Einstellung)

Die Isolationsstufe sollte nur bei Bedarf und nur so weit wie nötig reduziert werden. Es muss dann aber anderweitig sichergestellt werden, dass keine Dateninkonsistenzen in der Datenbank erzeugt werden können, d.h. in der Regel müssen parallele Zugriffe unterbunden werden.
Setzen Sie das Kennzeichen, wenn die Transaktionsklammer, die der JDBC-Adapter benötigt, um die Datenkonsistenz in der Datenbank sicherzustellen, abgeschaltet werden soll.
Diese Option wird für JDBC-Treiber benötigt, die keine Transaktionen unterstützen. Es muss dann aber anderweitig sichergestellt werden, dass keine Dateninkonsistenzen in der Datenbank erzeugt werden können, d.h. in der Regel müssen parallele Zugriffe unterbunden werden.

Setzen Sie dieses Kennzeichen nicht, wenn der JDBC-Treiber Transaktionen unterstützt, d. h. keine entsprechende Fehlermeldung im Normalbetrieb auftritt.
Setzen Sie das Kennzeichen, wenn vor jedem Poll-Intervall die Datenbank-Verbindung freigegeben und anschließend neu aufgebaut werden soll.
Wenn SQL-Statements in einem Batch zusammengefasst werden sollen, dann setzen Sie das Kennzeichen. Dies kann zu einer erheblichen Performance-Verbesserung führen.

Es ist möglich, dass nicht jeder verfügbare JDBC-Treiber in der Lage ist, dieses Feature so zu nutzen, dass eine Performance-Verbesserung erzielt werden kann.
Die Batch-Verarbeitung wird für folgende Anweisungen nicht unterstützt:
● SELECT
● INSERT_UPDATE
● EXECUTE
● SQL_QUERY
Geben Sie zusätzliche Parameternamen und -werte in der Tabelle ein.

Zusätzliche Parameter werden über SAP-Hinweis 801367 veröffentlicht.
Geben Sie Datums- und Zeitformate für den Aufruf von Stored Procedures an. Der Format-String entspricht dem der Java-Klasse java.text.SimpleDateFormat:
Buchstabe |
Datums- oder Zeitkomponente |
Typ |
Beispiele |
G |
Epochenbezeichner |
Text |
G = AD |
y |
Jahr |
Year |
yyyy = 1996; yy = 96 |
M |
Monat in Jahr |
Month |
MMMM = Juli, MMM = Jul, MM = 07 |
w |
Woche in Jahr |
Number |
27 |
W |
Woche in Monat |
Number |
2 |
D |
Tag in Jahr |
Number |
186 |
d |
Tag in Monat |
Number |
10 |
F |
Wochentag in Monat |
Number |
2 |
E |
Tag in Woche |
Text |
Dienstag; Di |
a |
Kennzeichen am/pm |
Text |
PM |
H |
Stunde in Tag (0-23) |
Number |
0 |
k |
Stunde in Tag (1-24) |
Number |
24 |
K |
Stunde in am/pm (0-11) |
Number |
0 |
h |
Stunde in am/pm (1-12) |
Number |
12 |
m |
Minute in der Stunde |
Number |
30 |
s |
Sekunde in der Minute |
Number |
55 |
S |
Millisekunde |
Number |
978 |
z |
Zeitzone |
Allgemeine Zeitzone |
Pacific Standard Time; PST; GMT-08:00 |
Z |
Zeitzone |
RFC 822-Zeitzone |
-0800 |

dd.MM.yyyy entspricht z.B. 10.07.2005
hh.mm entspricht z.B. 09.12
K:mm a entspricht z.B. 0:30 PM