應用程式定義的資料來源

您可以依照 Java™ EE 規格所定義,透過註釋,或在部署描述子中,將資料來源定義於您的應用程式內。

註: 對於應用程式定義的資料來源,建議採用 commonLibraryRef 類別載入器屬性。 privateLibraryRef 屬性無法用於 java:global 名稱空間,最好不要用於其他範圍。 如果多個應用程式宣告相同的 java:global 名稱空間來指定資料來源,應用程式的 server.xml 檔必須將 commonLibraryRef 屬性全部指定為相同的共用程式庫。

當資料來源定義在應用程式中,應用程式必須能夠使用 JDBC 驅動程式。 您可以在應用程式的 server.xml 中配置共用程式庫來做到這一點。

例如:

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

之後,您可以透過註釋,或在部署描述子中,將資料來源定義於您的應用程式中。

  • 依照下列範例來使用註釋:
    @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;
  • 依照下列範例來使用部署描述子,例如,在 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>
一般而言,server.xml 檔中的 dataSourceconnectionManager 所能定義的內容,也可以在應用程式定義的資料來源上指定。 不過,您無法指定參照其他元素的內容,例如 connectionManagerRefjdbcDriverRef,因為應用程式定義的資料來源會隱含地定義連線管理程式和 JDBC 驅動程式。 當您將應用程式定義的資料來源用於兩段式確定時,您可以指定 recoveryAuthDataRef 內容來選取用來回復交易的鑑別資料。 不過,請務必記住,應用程式必須在執行中,交易才有可能回復。 您可以在應用程式定義的資料來源中,使用各種變數、已編碼的密碼,以及期間語法。
註: 期間語法不適用於註釋中所明確定義的內容,例如 loginTimeoutmaxIdleTime

以下是兩個使用連線管理程式內容、變數、已編碼的密碼及期間語法之資料來源的範例。

@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"
        )
})

指示主題類型的圖示 參照主題

資訊中心條款 | 意見


「時間戳記」圖示 前次更新: 2015 年 6 月 22 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=rwlp_ds_appdefined
檔名:rwlp_ds_appdefined.html