XML-Konfiguration (DatabaseService)

Hinzufügen eines neuen Datenbank-Aliases


Wichtiger Hinweis: Die Verfügbarkeit eines Services hängt von der erworbenen Lizenz ab und davon, ob der Service innerhalb der Konfigurationsdatei ./etc/factory.xml der Service-Factory eingetragen wurde (Änderungen erfordern Server-Neustart!). Dort finden Sie auch die zuständige Konfigurationsdatei für einen Service, ansonsten können Sie die Konfigurationsdatei des Services auch direkt in der GUI des Services bearbeiten (Änderungen erfordern Service-Neustart!).

Mit folgendem XML-Fragment kann ein neuer Datenbank-Alias hinzugefügt werden (./etc/database.xml). Siehe auch Abschnitte Hinzufügen eines neuen Datenbank-Aliases mit der Admin-Konsole und Datenbanken (Verwaltung).


<Call name="initPool">
<Arg>
<New class="com.ebd.hub.services.database.DatabaseSettings">
<Set name="alias">db</Set>
<Set name="catalogName">wbv</Set>
<Set name="database">jdbc:postgresql://server:5432/db</Set>
<Set name="driver">org.postgresql.Driver</Set>
<Set name="user">dummy</Set>
<Set name="password">dummy</Set>
<Set name="lowerCase">lower</Set>
<Set name="minSize">2</Set>
<Set name="maxSize">2</Set>
<Set name="allowGrowing">true</Set>
<Set name="idleTime">300000</Set>
<Set name="sqlCommand">select obj_id from xml_unitrealm</Set>
<Set name="rollback">false</Set>
<Set name="caching">true</Set>
<Set name="checkConnection">false</Set>
<Set name="supportsStream">false</Set>
<Set name="maxStatementLength">32000</Set>
<Call name="addNamedProperty">
<Arg>propertyname</Arg>
<Arg>propertyvalue</Arg>
</Call>
</New>
</Arg>
</Call>


Die einzelnen Parameter haben dabei folgende Bedeutung.


alias

Der zu verwendende Alias.

catalogName

Der Name des Katalogs (Schema) innerhalb der Datenbank. Wird dieser nicht angegeben, wird der Aliasname verwendet.

database

Die JDBC-URL, die die Verbindung zur Datenbank repräsentiert. Diese URL ist datenbankabhängig, z. B. jdbc:mysql://myserver:3306/db.

driver

Die Klasse, die den Treiber des JDBC-Treibers darstellt. Diese Angabe ist datenbankabhängig, z. B. org.gjt.mm.mysql.Driver.

user

Der für die Authentifizierung bei der Datenbank zu verwendende Benutzername.

password

Das für die Authentifizierung bei der Datenbank zu verwendende Passwort. Obfuskation ist erlaubt, z. B. OBF:1wtm1xtz1w8v1xtj1wus

lowerCase

Der Name der Methode für das Umwandeln von Text in Kleinbuchstaben. Normalerweise wird diese Information vom JDBC-Treiber selbst geliefert, allerdings gibt es auch Ausnahmen, sodass eine explizite Angabe erforderlich wird.

minSize

Die Anfangsgröße des Verbindungspools beim Starten des Services.

maxSize

Die maximale Größe des Verbindungspools. Soll der Standard verwendet werden, kann maxSize=-1 angegeben werden.

allowGrowing

Wird dieser Punkt aktiviert, darf der Pool wachsen, wenn alle initial erstellten Verbindungen an Applikationen ausgegeben wurden und eine weitere benötigt wird.

idleTime

Gibt die Zeit in Millisekunden an, die eine Verbindung unbenutzt im Pool sein muss, bevor ihre weitere Gültigkeit vom DatabaseService überprüft wird.

sqlCommand

Ist der für die Überprüfung der Gültigkeit einer Datenbankverbindung zu verwendende SQL-Befehl. Wird kein Befehl angegeben, wird die Liste der verfügbaren Tabellen abgerufen. Allerdings wird diese Information von manchen JDBC-Treibern gecached, sodass eine Verbindung als gültig angesehen werden kann, obwohl sie das nicht mehr ist.

rollback

Eine Aktivierung dieses Punktes besagt, dass die zu verbindende Datenbank transaktionsbasiertes Arbeiten unterstützt. Eine Angabe von false hat dabei zur Folge, dass nicht versucht wird, eine Transaktion zu beginnen, was bei manchen Datenbanken zu einer Fehlermeldung führen würde.

Achtung: Wird bei einer transaktionsfähigen Datenbank der Wert false angegeben, wird auch hier der Versuch ignoriert, eine Transaktion zu starten. Commit und Rollback haben auch keinerlei Effekt, obwohl die Datenbank eigentlich dazu in der Lage wäre.

caching

Wird dieser Punkt aktiviert, werden von Applikationen verwendete SQL-Statements gecached. Alle Statements müssen vom DatabaseService überprüft und bei Bedarf angepasst werden. Bei Systemen mit ausreichenden Ressourcen macht es daher Sinn, das Ergebnis dieser Überprüfung/Veränderung für zukünftige Verwendungen zu speichern. Werden jedoch primär dynamische Statements verwendet, kann ein explizites Deaktivieren Sinn machen, um unnötiges Speichern nie wieder verwendeter SQL-Statements zu vermeiden.

checkConnection

Wird dieser Punkt aktiviert, wird die Gültigkeit einer Verbindung vor jedem Herausgeben aus dem Pool an eine Applikation überprüft. Dies reduziert die Performance des Systems, stellt jedoch zu 100 Prozent sicher, dass die Applikation eine Verbindung erhält, die funktioniert und nicht seit der letzten Überprüfung ungültig geworden ist.

supportsStream

Legt fest, ob die verbundene Datenbank sogenannte Characterstreams als Parameter für das Schreiben in und das Lesen aus einer Datenbank unterstützt. Diese Information wird z. B. beim JDO-Service genutzt, der entscheiden muss, ob ein zu schreibendes Objekt "gestriped" werden soll oder nicht.

maxStatementLength

Legt die maximale Größe eines SQL-Statements fest. Diese Einstellung kann von Applikationen genutzt werden, um zu entscheiden, ob ein Statement mit einem Characterstream genutzt werden kann oder nicht.

addNamedProperty

Erlaubt das direkte Setzen sogenannter ConnectionProperties. Bei vielen JDBC-Treibern kann die Art und Weise, wie eine Verbindung zur Datenbank aufgebaut werden soll, über das Setzen von Key-Value-Paaren gesteuert werden. Das erste Argument stellt bei diesem Aufruf den Schlüssel dar, das zweite den Wert, der gesetzt werden soll. Beispiel: transaction level und none.
Welche Wertepaare gesetzt werden können, ist abhängig vom verwendeten JDBC-Treiber. Daher sei an dieser Stelle auf die Dokumentation des jeweiligen Treibers verwiesen.

skipTrimResultValues

Bei MSSQL- und Informix-Datenbanken werden die Ergebniswerte von SQL-Aufrufen um voranstehende und nachfolgende Leerzeichen bereinigt (trimmed). Will man das nicht, kann man diesen Wert hier einfügen und auf true setzen. Wichtiger Hinweis: Man sollte diese Einstellungen aber nicht beim Alias für die Repository-Datenbank von Lobster_data (hub) vornehmen, da dies zu funktionalen Problem führen würde (Partnerverwaltung findet dann Kanäle nicht, etc.). Dann lieber einen zweiten Alias auf die gleiche Datenbank mit dieser Einstellung erzeugen.


Optionale Properties werden eingefügt über den folgenden Block. Obfuskation ist erlaubt, z. B. OBF:1wtm1xtz1w8v1xtj1wus


<Call name="addNamedProperty">
<Arg>propertyname</Arg>
<Arg>propertyvalue</Arg>
</Call>

Setzen der Zeit zwischen zwei Verbindungsüberprüfungen


Folgendes XML-Fragment setzt die Zeit, die zwischen zwei Verbindungsüberprüfungen gewartet werden soll.


<Set name="idleTime">200000</Set>


Die idleTime ist nicht zu verwechseln mit dem Time interval, das bei der Erstellung einer Datenbankverbindung angegeben wird. Die idleTime bezeichnet die Zeit, wann ein Überprüfungslauf überhaupt stattfinden soll. Wird also z. B. ein Überprüfungslauf auf alle fünf Minuten eingestellt und das Time interval einer Verbindung auf 10 Minuten, wird eine solche Verbindung frühestens beim zweiten Durchlauf überhaupt überprüft.