Show TOC 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 StrukturlinkIntegration Server oder im PCK und wird auf der Registerkarte Parameter vorgenommen. 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

Als Inhalt der Nachricht wird eine beliebige SQL-Anweisung erwartet, die unverändert an die Datenbank zur Verarbeitung übergeben wird.

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 aus oder wählen Sie eine dezentral installierte Adapter-Engine aus. Im PCK ist diese Auswahl nicht möglich.

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

XML Schema-Interpreter bei Message-Protokoll XML SQL-Format

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 Fehler 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, so dass 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.

·        Name der Wertspalte

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.

·        Spaltennamenbegrenzer

Abhängig von der Datenbank können Spaltennamen von einem speziellen Abgrenzungszeichen umschlossen sein, beispielsweise wenn die Namen Sonderzeichen enthalten dürfen (z.B. ein “). 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

·        Kommandozeile

Geben Sie einen Betriebssystembefehl an, das nach erfolgreichen Datenbankoperationen ausgeführt werden soll.

·        Timeout (secs)

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 Timeout abbrechen

Setzen Sie das Kennzeichen, wenn der Adapter nach Ablauf des Timeout das auszuführende Programm abbrechen soll.

Der Adapter schreibt die Ausgaben (STDOUT und STDERR) des Betriebssystembefehls in den System-Trace.

Adapterstatus

Setzen Sie den Adapter 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 Versuche überschritten, wird der letzte Zustand an den sendenden Integration Server/an das zu sendende PCK zurückgemeldet, d.h. im Fehlerfall wird die Nachricht erst dann erneut weiterverarbeitet, wenn sie vom Integration Server/vom PCK erneut versendet wird.

Datenbank-Transaktionssicherheitsstufe

Datenbanktransaktionen können in verschiedenen Abstufungen (Isolation-Levels) betrieben werden. Der JDBC-Adapter verwendet standardmäßig die höchste Isolierungsstufe (serializable), um Datenbankinkonsistenzen durch parallele Datenbanktransaktionen zu vermeiden. Bei einigen JDBC-Treibern kann eine Reduzierung dieses Level notwendig sein, wenn der Treiber bzw. das Datenbankprodukt diesen Level nicht unterstützt. Eine Reduzierung des Level kann zu Lasten der Transaktionssicherheit und der Datenintegrität gehen. Daher sollten Sie eine Reduktion nur vornehmen, wenn sie unbedingt erforderlich ist. Die zur Auswahl stehenden Optionen entsprechen den JDBC-Konstanten:

·        None

·        read-uncommited

·        read-commited

·        repeatable_read

·        serializable

Achtung

Der Level sollte nur wenn nötig und nur so weit wie benötigt reduziert werden. Gegebenenfalls 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 konsistente Daten in der Datenbank sicher zu stellen, 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 kommt.

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.

Der Batch-Modus 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 im Monat

Number

2

E

Tag in Woche

Text

Dienstag; Die

a

Kennzeichen am/pm

Text

PM

H

Stunde im Tag (0-23)

Number

0

k

Stunde im 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 enspricht z.B. 10.07.2005

hh.mm entspricht z.B. 09.12

K:mm a entspricht z.B. 0:30 PM

 

Ende des Inhaltsbereichs