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. Eigenschaften, die auf andere Elemente verweisen, wie z. B. connectionManagerRef und jdbcDriverRef, können jedoch nicht angegeben werden, weil die anwendungsdefinierte 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"
        )
})

Symbol das den Typ des Artikels anzeigt. Referenzartikel

Nutzungsbedingungen für Information Center | Feedback


Symbol für Zeitmarke Letzte Aktualisierung: 25.08.2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=rwlp_ds_appdefined
Dateiname: rwlp_ds_appdefined.html