Ressourcendefinition für Datenquellen in Anwendungen

Anwendungen können Datenquellen in Annotationen oder im Implementierungsdeskriptor definieren. Dieser Artikel enthält eine Übersicht über die Ähnlichkeiten und die Kompatibilität mit Datenquellen von WebSphere Application Server, die auf Server-, Knoten-, Cluster- oder Zellenebene definiert sind. Optionale Features in den Datenquellendefinitionen werden ebenfalls erläutert.

Standardeigenschaften für die Datenquellendefinition

Tabelle 1. Standardeigenschaften für die Datenquellendefinition. Diese Tabelle enthält Informationen zu den Standardeigenschaften für die Datenquellendefinition.
Annotationselement Deskriptorelement Kommentare
name name JNDI-Name für die Datenquelle. Bei dem Namen muss es sich um einen der Namespaces "java:global", "java:app", "java:module" oder "java:comp" handeln.
className class-name Vollständig qualifizierter Klassenname aus dem JDBC-Treiber, der "javax.sql.XADataSource", "javax.sql.ConnectionPoolDataSource" oder "javax.sql.DataSource" implementiert.
databaseName database-name Der Wert wird für den JDBC-Treiber bereitgestellt.
description description Der Wert wird für die MBean "DataSource" bereitgestellt.
initialPoolSize initial-pool-size Der Wert der Eigenschaft wird ignoriert. In WebSphere Application Server beträgt die Anfangspoolgröße immer 0.
isolationLevel isolation-level Äquivalent zur angepassten Eigenschaft "webSphereDefaultIsolationLevel" von WebSphere Application Server. Dies ist eine standardmäßig festgelegte Transaktionsisolationsstufe für neue Verbindungen.
loginTimeout login-timeout Der Wert wird für den JDBC-Treiber bereitgestellt.
maxIdleTime max-idle-time Äquivalent zur Eigenschaft für Verbindungspooling "unusedTimeout" von WebSphere Application Server. Diese Eigenschaft wird in dem Client-Container, in dem das Verbindungspooling bereitgestellt wird, ignoriert.
maxPoolSize max-pool-size Äquivalent zur Eigenschaft für Verbindungspooling "maxConnections" von WebSphere Application Server. Diese Eigenschaft wird in dem Client-Container, in dem das Verbindungspooling bereitgestellt wird, ignoriert.
maxStatements max-statements Definiert die maximale Anzahl der Anweisungen für den Verbindungspool. In WebSphere Application Server verfügt jede gepoolte Verbindung über einen eigenen Anweisungscache. Folglich wird "maxStatements" (gleichmäßig und mit Abrunden) auf "maxPoolSize" für den Pool aufgeteilt. Wenn "maxPoolSize" unbegrenzt ("unlimited") ist, wird das Anweisungspooling inaktiviert.
minPoolSize min-pool-size Äquivalent zur Eigenschaft für Verbindungspooling "minConnections" von WebSphere Application Server. Diese Eigenschaft wird in dem Client-Container, in dem das Verbindungspooling bereitgestellt wird, ignoriert.
password password Standardkennwort für Verbindungsanforderungen, die kein Kennwort angeben. Sie sollten die Verwendung eines Authentifizierungsalias in Erwägung ziehen, anstatt den Benutzernamen und das Kennwort in der Anwendung fest zu codieren.
portNumber port-number Der Wert wird für den JDBC-Treiber bereitgestellt.
serverName server-name Der Wert wird für den JDBC-Treiber bereitgestellt.
transactional transactional In WebSphere Application Server steuert die Eigenschaft "transactional", ob die Verbindung an JTA-Transaktionen beteiligt ist. Wenn die Einstellung "transactional=false" festgelegt ist, sind Verbindungen nicht an JTA-Transaktionen beteiligt, aber sie können trotzdem Transaktionen für die Datenbank ausführen, indem sie "autocommit=true" oder "connection.commit/rollback" mit "autocommit=false" verwenden. Bildet den Gegensatz zur angepassten Datenquelleneigenschaft "nonTransactionalDataSource" von WebSphere Application Server.
url url Der Wert wird für den JDBC-Treiber bereitgestellt.Wenn die URL angegeben ist, werden Werte für "databaseName", "serverName" und "portNumber" ignoriert.
user user Standardbenutzername für Verbindungsanforderungen, die keinen Benutzername angeben. Sie sollten die Verwendung eines Authentifizierungsalias in Erwägung ziehen, anstatt den Benutzernamen und das Kennwort in der Anwendung fest zu codieren.

Anbieterspezifische Eigenschaften und angepasste Eigenschaften

In die Datenquellendefinition können anbieterspezifische Eigenschaften für den JDBC-Treiber aufgenommen werden. Außerdem können die meisten angepassten Eigenschaften für WebSphere Application Server in die Datenquellendefinition aufgenommen werden.

Bei Annotationen erfolgt dies mit dem Element "properties". Beispiel:
@DataSourceDefinition
(
  name="java:app/env/myDataSource",
  className="org.apache.derby.jdbc.EmbeddedXADataSource40",
  databaseName="myDB",
  properties=
  {
    // Anbieterspezifische Eigenschaften für den Derby Embedded JDBC Driver:
    "createDatabase=create",
    "connectionAttributes=upgrade=true",

    // Angepasste Eigenschaften für WebSphere Application Server:
    "connectionTimeout=60",
    "dataStoreHelperClass=com.ibm.websphere.rsadapter.DerbyDataStoreHelper",
    "validateNewConnection=true",
    "validateNewConnectionRetryCount=5"
  },
  serverName=""
)
Das folgende Beispiel zeigt, wie die Datenquellendefinition in den Implementierungsdeskriptor aufgenommen wird:
<data-source>
 <name>java:app/env/myDataSource</name>
 <class-name>org.apache.derby.jdbc.EmbeddedXADataSource40</class-name>
 <database-name>myDB</database-name>
 <property><name>createDatabase</name><value>create</value></property>
 <property><name>connectionAttributes</name><value>upgrade=true</value></property>
 <property><name>connectionTimeout</name><value>60</value></property>
 <property><name>dataStoreHelperClass</name><value>com.ibm.websphere.rsadapter.DerbyDataStoreHelper</value></property>
 <property><name>validateNewConnection</name><value>true</value></property>
 <property><name>validateNewConnectionRetryCount</name><value>5</value></property>
 <server-name/>
</data-source>
Nachfolgend ist eine Liste der angepassten Eigenschaften für WebSphere Application Server aufgeführt, die auf diese Art und Weise konfiguriert werden können:
  • Eigenschaften für Verbindungspooling:
    • agedTimeout
    • authDataAlias
    • authMechanismPreference
    • connectionTimeout
    • defaultConnectionTypeOverride
    • globalConnectionTypeOverride
    • mappingConfigAlias
    • purgePolicy
    • reapTime
    • stuckThreshold
    • stuckTime
    • stuckTimerTime
    • surgeCreationInterval
    • surgeThreshold
    • testConnection
    • testConnectionInterval
    • XA_RECOVERY_AUTH_ALIAS
  • Angepasste Eigenschaften für Datenquellen:
    • beginTranForResultSetScrollingAPIs
    • beginTranForVendorAPIs
    • connectionSharing
    • enableMultithreadedAccessDetection
    • errorDetectionModel
    • freeResourcesOnClose
    • oracleRACXARecoveryDelay (nur Oracle)
    • preTestSQLString
    • userDefinedErrorMap
    • validateNewConnection
    • validateNewConnectionRetryCount
    • validateNewConnectionRetryInterval
    • validateNewConnectionTimeout

Ressourcenreferenzen

Es wird empfohlen, dass die Anwendungen beim Zugriff auf Datenquellen immer Ressourcenreferenzen verwenden, da diese von der Implementierungsfunktion einfacher überschrieben werden können.

Gemeinsame Nutzung von Verbindungen

Standardmäßig gilt für eine Datenquellendefinition, dass eine Verbindungsanforderung eine vorhandene und bereits verwendete Verbindung dann ebenfalls nutzen kann, wenn sie mit den ursprünglich angeforderten Einstellungen für diese Verbindung übereinstimmt ("connectionSharing=MatchOriginalRequest"). Alternativ dazu kann eine gemeinsame Nutzung von Verbindungen ermöglicht werden, indem die Verbindungsanforderung dem aktuellen Status der Verbindung zugeordnet wird ("connectionSharing=MatchCurrentState").

Lebenszyklus

Der Lebenszyklus einer Datenquellendefinition ist an den Lebenszyklus der Anwendungen gebunden, von denen sie definiert wird. Daher können Sie Ihre Anwendung aktualisieren, um die Datenquellendefinition zu ändern, ohne dass ein Serverneustart erforderlich ist. Wenn mehrere Anwendungen dieselbe Datenquellendefinition enthalten, z. B. wenn beide Datenquellendefinitionen identische "java:global"-Namen haben, für beide identische Eigenschaften und identische Werte für diese Eigenschaften konfiguriert sind, müssen zunächst alle Anwendungen deinstalliert und anschließend die Datenquellendefinition aktualisiert und die Anwendungen erneut installiert werden.

Konflikte zwischen Datenquellendefinitionen

In Anwendungen, Modulen und Komponenten sollte darauf geachtet werden, dass keine Datenquellen mit identischen "java:global"-Namen definiert werden, da der Prozess eine Koexistenz von Anwendungen unmöglich macht. Innerhalb einer Anwendung und innerhalb von Modulen und Komponenten sollten keine Datenquellen definiert werden, deren "java:app"-Name identisch ist mit dem eines anderen Moduls oder einer anderen Komponente. Ein solcher Konflikt würde dazu führen, dass die Anwendungsinstallation scheitert. Innerhalb eines Moduls sollten Komponenten keine Datenquellen definieren, deren "java:module"-Name identisch ist mit dem anderer Komponenten. Ein solcher Konflikt würde dazu führen, dass die Anwendungsinstallation scheitert. Innerhalb des Webmoduls, sollten Komponenten keine Datenquellen definieren, deren "java:comp"-Name identisch ist mit dem anderer Komponenten. Ein solcher Konflikt würde dazu führen, dass die Anwendungsinstallation scheitert.


Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cdat_datres
Dateiname:cdat_datres.html