Liberty:Anwendungsdefinierte Datenquellen
Sie können eine Datenquelle in Ihrer Anwendung mithilfe von Annotationen oder im Implementierungsdeskriptor gemäß der Java™ EE-Spezifikation definieren.
Anmerkung: Das Klassenladerattribut commonLibraryRef wird für anwendungsdefinierte Datenquellen empfohlen. Das
Attribut privateLibraryRef kann nicht für den java:global-Namespace verwendet werden. Es wird empfohlen,
dieses Attribut für die anderen Bereiche nicht zu verwenden. Wenn mehrere Anwendungen denselben
java:global-Namespace deklarieren, um die Datenquelle anzugeben,
müssen die Dateien vom Typ server.xml alle ein commonLibraryRef-Attribut für dieselbe gemeinsam genutzte Bibliothek
angeben.
Wenn Sie eine Datenquelle in einer Anwendung definieren, muss der JDBC-Treiber der Anwendung zur Verfügung gestellt werden. Dazu konfigurieren Sie eine gemeinsam genutzte Bibliothek in der Datei server.xml für Ihre Anwendung.
Beispiel:
<application id="myApp" name="myApp" location="myApp.war" type="war">
<classloader commonLibraryRef="DB2Lib"/>
</application>
<library id="DB2Lib">
<fileset dir="C:/DB2/java" includes="db2jcc4.jar db2jcc_license_cisuz.jar"/>
</library>
Sie können eine Datenquelle in Ihrer Anwendung mithilfe von Annotationen oder im Implementierungsdeskriptor definieren.
- Beispiel für die Verwendung von Annotationen:
@DataSourceDefinition( name = "java:comp/env/jdbc/db2", className = "com.ibm.db2.jcc.DB2DataSource", databaseName = "SAMPLEDB", serverName = "localhost", portNumber = 50000, properties = { "driverType=4" }, user = "user1", password = "pwd1" ) public class MyServlet extends HttpServlet { @Resource(lookup="java:comp/env/jdbc/db2") DataSource ds;
- Beispiel für die Verwendung des Implementierungsdeskriptors, z. B. einer
Datei web.xml:
<data-source> <name>java:comp/env/jdbc/db2</name> <class-name>com.ibm.db2.jcc.DB2DataSource</class-name> <server-name>localhost</server-name> <port-number>50000</port-number> <database-name>SAMPLEDB</database-name> <user>user1</user> <password>pwd1</password> <property><name>driverType</name><value>4</value></property> </data-source>
Im Allgemeinen können Eigenschaften, die in dataSource oder connectionManager in
den Dateien server.xml definiert werden können, auch in anwendungsdefinierten
Datenquellen angegeben werden. connectionManagerRef und jdbcDriverRef bilden eine Ausnahme. Sie können nicht angegeben werden, weil die über die Anwendung definierte Datenquelle den Verbindungsmanager und den JDBC-Treiber implizit definiert. Wenn Sie anwendungsdefinierte
Datenquellen für zweiphasige Festschreibung verwenden, können Sie die Eigenschaft
recoveryAuthDataRef angeben, um die Authentifizierungsdaten
auszuwählen, die für die Transaktionswiederherstellung verwendet werden.
Es muss jedoch unbedingt beachtet werden, dass die Wiederherstellung von Transaktionen
nur möglich ist, wenn die Anwendung aktiv ist. Sie können Variablen, codierte Kennwörter und eine Angabe für die Dauer
in anwendungsdefinierten Datenquellen verwenden.
Anmerkung: Die Angabe für die Dauer gilt nicht für Eigenschaften, die explizit in der Annotation
definiert sind, wie z. B. loginTimeout oder maxIdleTime.
Im Folgenden sehen Sie ein Beispiel für zwei Datenquellen, die Verbindungsmanagereigenschaften, Variablen, codierte Kennwörter und eine Angabe für die Dauer verwenden.
@DataSourceDefinitions(value = {
@DataSourceDefinition(
name = "java:comp/env/jdbc/derby",
className = "org.apache.derby.jdbc.EmbeddedDataSource40",
databaseName = "${shared.resource.dir}/data/SAMPLEDB",
minPoolSize = 1,
maxPoolSize = 10,
maxIdleTime = 180,
properties = { "agedTimeout=10m", "connectionTimeout=30s", "createDatabase=create" }
),
@DataSourceDefinition(
name = "java:comp/env/jdbc/oracle",
className = "oracle.jdbc.pool.OracleDataSource",
url = "jdbc:oracle:thin:@//localhost:1521/SAMPLEDB",
user = "user1",
password = "{xor}Oz0vKDtt"
)
})