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. |
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.