Anfang des Inhaltsbereichs

Funktionsdokumentation Konfiguration des JDBC-Empfänger-Adapters  Dokument im Navigationsbaum lokalisieren

Verwendung

Konfigurieren Sie den JDBC-Empfänger-Adapter, um damit XML-Messages vom Integration Server oder vom PCK in Inhalte von Datenbanktabellen umzuwandeln.

Integration

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.

Voraussetzungen

...

       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.

Aktivitäten

Zur Konfiguration des Adapters machen Sie folgende Angaben:

Transport-Protokoll

JBDC 2.0

Message-Protokoll

      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.

Adapter-Engine

Wählen Sie die Adapter-Engine auf dem Integration Server oder eine dezentral installierte Adapter-Engine aus. Diese Auswahl ist im PCK nicht möglich.

Registerkarte Verbindung

Datenbankverbindung

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

Registerkarte Verarbeitung

Maximale Parallelverarbeitung

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.

XML Schema-Interpreter

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.

Behandlung von Exactly Once

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.

SQL Syntax-Parameter

      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.

Betriebssystembefehl ausführen

      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.

Hinweis

Die Message-Verarbeitung erfolgt unabhängig davon, ob bei der Ausführung eines konfigurierten Betriebssystembefehls ein Fehler auftritt.

Registerkarte Erweitert

Adapterstatus

Setzen Sie den Adapter auf Aktiv, um ihn für den Message-Austausch einzusetzen.

Erweiterter Modus

Um zusätzliche Parameter anzugeben, setzen Sie das Kennzeichen Erweiterter Modus.

Anzahl Wiederholungen der Datenbanktransaktion bei SQL-Fehler

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.

Isolationsstufe für Transaktion

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)

Achtung

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.

Auto-Commit für Datenbank aktiviert (keine Transaktionssicherheit)

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.

Achtung

Setzen Sie dieses Kennzeichen nicht, wenn der JDBC-Treiber Transaktionen unterstützt, d. h. keine entsprechende Fehlermeldung im Normalbetrieb auftritt.

Nach Verarbeiten jeder Message Verbindung zur Datenbank aufheben

Setzen Sie das Kennzeichen, wenn vor jedem Poll-Intervall die Datenbank-Verbindung freigegeben und anschließend neu aufgebaut werden soll.

Batch-Modus

Wenn SQL-Statements in einem Batch zusammengefasst werden sollen, dann setzen Sie das Kennzeichen. Dies kann zu einer erheblichen Performance-Verbesserung führen.

Hinweis

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

Tabelle

Geben Sie zusätzliche Parameternamen und -werte in der Tabelle ein.

Hinweis

Zusätzliche Parameter werden über SAP-Hinweis 801367 veröffentlicht.

Datum-/Zeitformat zum Aufruf von Stored Procedures

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

Beispiel

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

 

 

 

 

 

Ende des Inhaltsbereichs