JDBC-Sender-Adapter konfigurieren
Sie konfigurieren den JDBC-Sender-Adapter, um damit Inhalte aus Datenbanken an den Integration Server oder an das PCK zu versenden.
● Sie müssen in der Datenbanktabelle ein Kennzeichen einführen, das den Verarbeitungsstatus jedes Datensatzes im Adapter (Datensatz ist verarbeitet/Datensatz ist nicht verarbeitet) angibt.
● Die UPDATE-Anweisung muss genau die Datensätze verändern, die durch die SELECT-Anweisung ausgewählt worden sind. Dies können Sie über eine identische WHERE-Klausel sicherstellen. (Siehe unten unter Verarbeitungsparameter, SQL-Anweisung für Query und SQL-Anweisung für Update.)
● Eine korrekte Verarbeitung erfolgt nur dann, wenn die Isolationsstufe für die Transaktion auf repeatable_read oder serializablegesetzt ist.

SQL-Anweisung für Query: SELECT * FROM table WHERE processed = 0;
SQL-Anweisung für Update: UPDATE table SET processed = 1 WHERE processed = 0;
processed ist das Kennzeichen in der Datenbank.
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.
Der Adapter ermittelt gemäß seiner Konfiguration die Payload der XI-Message. Die Informationen des Message-Header werden dagegen aus der zum Kommunikationskanal gehörenden Sendervereinbarung ermittelt.
Für die Definition der Sendervereinbarung ergeben sich für den Adapter folgende Bedingungen:
● Es muss genau eine Sendervereinbarung für den hier definierten Kommunikationskanal geben.
● In der Sendervereinbarung müssen mindestens der Interface-Name und der Sender-Service qualifiziert sein. Alle anderen Felder sind entsprechend den allgemeinen Regeln zur Definition von Sendervereinbarungen optional.
1. Sie haben einen Kommunikationskanal angelegt oder einen bestehenden Kommunikationskanal geöffnet.
2. Sie haben auf der Registerkarte Parameter den Adaptertyp JDBCausgewählt.
3. Sie haben den Adapter über den Auswahlknopf Sender als Sender-Adapter definiert.
Das Transport-Protokoll heißt JBDC 2.0.
JDBC
In zukünftigen Versionen können weitere Werte hinzukommen.
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 |
Benutzer für die zu lesende Datenbank. |
Kennwort |
Kennwort für die zu lesende Datenbank mit Bestätigung. |
Geben Sie folgende Parameter an:
Parameter |
Eingabe |
Quality-of-Service |
Gibt an, wie eine Message durch den Integration Server/das PCK verarbeitet werden soll. Best Effort (synchrone Verarbeitung) Exactly Once (asynchrone Verarbeitung) Exactly Once In Order (Asynchrone Verarbeitung mithilfe von Queues. Dies bedeutet die einmalige Ausführung unter Beibehaltung der Reihenfolge aufeinander folgender Nachrichten.) Geben Sie den Queue-Namen an. |
Poll-Intervall (Sek.) |
Anzahl der Sekunden, die der Adapter warten soll, wenn keine Dateien zur Verarbeitung gefunden werden. |
Poll-Intervall (mSek.) |
Zusätzliche Wartezeit in Millisekunden. Wenn Poll-Intervall (Sek.) auf Null gesetzt ist, lassen sich kurze, echtzeitnahe Verarbeitungszeiten erreichen. Sind Poll-Intervall (Sek.) und Poll-Intervall (mSek.) auf Null gesetzt, so findet ein einmaliger Aufruf des Adapters statt. |
Wiederholungsintervall (Sek.) |
Anzahl der Sekunden, die der Adapter warten soll, bis eine fehlerhaft verarbeitete SQL-Anweisung erneut verarbeitet wird.
Falls keine Angabe erfolgt, dann wird der Wert unter Poll-Intervall (Sek.) genommen. |
SQL-Anweisung für Query |
Es gibt folgende Möglichkeiten: ● Geben Sie eine gültige SQL SELECT-Anweisung an, um die zu versendenden Daten aus der spezifizierten Datenbank auszuwählen. ● Geben Sie eine SQL EXECUTE-Anweisung an, um eine Stored Procedure auszuführen, die genau eine SELECT-Anweisung enthält. Der Ausdruck muss der vom jeweiligen JDBC-Treiber unterstützten SQL-Variante entsprechen. Er kann auch Tabellen-JOINs enthalten. |
Dokumentname |
Dieser Dokumentname wird in der Message als Haupt-XML-Tag eingefügt. Der Vorgabewert ist resultset. |
Dokumentnamensraum |
Der Namensraum wird dem Dokumentnamen hinzugefügt.
Siehe das Beispiel unten. |
SQL-Anweisung für Update |
Es gibt folgende Möglichkeiten: ● Geben Sie eine gültige SQL-Anweisung ein, die nach dem erfolgreichen Versenden der unter SQL-Anweisung für Query ermittelten Daten an den Integration Server/an das PCK auf die Datenbank angewendet werden soll. Es muss sich um eine INSERT-, UPDATE- oder DELETE-Anweisung handeln. ● Anstelle der SQL-Anweisung kann <TEST> eingegeben werden. Nach erfolgreichem Versenden der unter SQL-Anweisung für Query ermittelten Daten bleiben die Daten in der Datenbank unverändert. Diese Eingabe ist sinnvoll, wenn die Daten durch eine Eingabe unter SQL-Anweisung für Query definierte Stored Procedure nicht nur gelesen, sondern bereits verändert wurden. |
● 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 für die Adapterkonfiguration anzugeben, setzen Sie das Kennzeichen Erweiterter Modus.
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.
Setzen Sie dieses Kennzeichen, wenn Sie leere Tags aus der Ergebnismenge des Sender-Adapters entfernen und so die Größe des XML-Dokuments reduzieren möchten.

Ist das Kennzeichen nicht gesetzt, sieht die Ergebnismenge folgendermaßen aus:
<resultset>
<row>
<column-name1>column-value</column-name1>
<column-name2></column-name2>
<column-name3>column-value</column-name3>
<column-name4></column-name4>
</row>
<row>
<column-name1>column-value</column-name1>
<column-name2></column-name2>
</row>
</resultset>
Ist das Kennzeichen gesetzt, sieht die Ergebnismenge folgendermaßen aus:
<resultset>
<row>
<column-name1>column-value</column-name1>
<column-name3>column-value</column-name3>
</row>
<row>
<column-name1>column-value</column-name1>
</row>
</resultset>
Geben Sie die Parameternamen und -werte in der Tabelle an.

Zusätzliche Parameter werden über SAP-Hinweis 801367 veröffentlicht.
Das System setzt die Tabelle, die aus der SQL-Anweisung für die Query resultiert, in ein gültiges XML-Dokument um und sendet es an die Integration Engine. Das Dokument sieht folgendermaßen aus:
<resultset>
<row>
<column-name1>column-value</column-name1>
<column-name2>column-value</column-name2>
<column-name3>column-value</column-name3>
</row>
<row>
<column-name1>column-value</column-name1>
<column-name2>column-value</column-name2>
<column-name3>column-value</column-name3>
</row>
</resultset>