Sun Java System Application Server 9.1 管理指南

第 3 章 JDBC 資源

本章說明如何配置存取資料庫的應用程式所要求使用的 JDBC 資源。本章包括下列小節:

JDBC 資源

為了儲存、組織和擷取資料,大多數應用程式均使用關聯式資料庫。J2EE 應用程式透過 JDBC API 存取關聯式資料庫。

JDBC 資源 (資料源) 為應用程式提供連線至資料庫的方法。通常,管理員要為部署在網域中的應用程式存取的每個資料庫建立 JDBC 資源。(但是,可以為一個資料庫建立多個 JDBC 資源。)

若要建立 JDBC 資源,請指定識別資源的專屬 JNDI 名稱。(請參閱「JNDI 名稱和資源」一節。)JDBC 資源的 JNDI 名稱應在 java:comp/env/jdbc 子環境中。例如,薪水帳單資料庫資源的 JNDI 名稱可為 java:comp/env/jdbc/payrolldb。由於所有資源 JNDI 名稱均在 java:comp/env 子環境中,因此在管理主控台中指定 JDBC 資源的 JNDI 名稱時,僅需輸入 jdbc/name。例如,對於薪水帳單資料庫,可指定 jdbc/payrolldb

JDBC 連線池

若要建立 JDBC 資源,請指定與其關聯的連線池。多個 JDBC 資源可指定單一連線池。

JDBC 連線池是針對特定資料庫的一組可重複使用的連線。由於每建立一個新的實體連線都會耗費時間,因此伺服器維護了可用連線池以提高效能。當應用程式請求連線時,它可以從池中取得一個連線。應用程式關閉連線時,連線將傳回池中。

連線池的特性可能會隨資料庫供應商的不同而有所不同。某些特性是通用的,例如資料庫名稱 (URL)、使用者名稱和密碼。

另請參閱:

JDBC 資源和連線池如何協同工作

為了儲存、組織和擷取資料,大多數應用程式均使用關聯式資料庫。J2EE 應用程式透過 JDBC API 存取關聯式資料庫。應用程式存取資料庫之前,必須先取得連線。

以下是在執行階段應用程式連線至資料庫時所發生的情況:

  1. 應用程式透過 JNDI API 進行呼叫以獲取與資料庫關聯的 JDBC 資源 (資料源)。

    如果給定了資源的 JNDI 名稱,命名和目錄服務將查找 JDBC 資源。每個 JDBC 資源指定一個連線池。

  2. 通過 JDBC 資源,應用程式獲得一個資料庫連線。

    Application Server 秘密地從與該資料庫相對應的連線池中擷取實體連線。池定義資料庫名稱 (URL)、使用者名稱和密碼等連線屬性。

  3. 由於已將應用程式連線至資料庫,因此該應用程式可以讀取和修改資料庫中的資料以及將資料增加到資料庫中。

    應用程式透過對 JDBC API 進行呼叫來存取資料庫。JDBC 驅動程式可將應用程式的 JDBC 呼叫翻譯為資料庫伺服器的協定。

  4. 存取資料庫完成之後,應用程式將關閉該連線。

    Application Server 將連線傳回連線池。連線傳回連線池之後,下一個應用程式便可以使用該連線。

設定資料庫存取

若要設定資料庫存取:

  1. 安裝支援的資料庫產品。

    如需有關 Application Server 支援的資料庫產品的清單,請參閱版本說明

  2. 安裝適用於該資料庫產品的 JDBC 驅動程式。

  3. 使網域的伺服器實例可以存取此驅動程式的 JAR 檔案。

  4. 建立資料庫。

    通常,應用程式供應程式提供了用於建立和填入資料庫的程序檔。

  5. 為資料庫建立連線池。

  6. 建立指向連線池的 JDBC 資源。

現在若要將 JDBC 驅動程式整合到管理網域中,請執行以下操作之一:

  1. 使通用類別載入器可以存取該驅動程式。

    將驅動程式的 JAR 檔案和 ZIP 檔案複製到 domain-dir/lib 目錄或將其類別檔案複製到 domain-dir/lib/ext 目錄中。

  2. 重新啟動網域。

  3. 指出驅動程式 JAR 檔案的完全合格路徑名稱。

關於 JDBC 連線池

JDBC 連線池是針對特定資料庫的一組可重複使用的連線。使用管理主控台建立連線池時,管理員實際上是在定義與特定資料庫的連線之各種資訊。

建立池之前,您必須首先安裝並整合 JDBC 驅動程式。建置 [建立連線池] 頁面時,必須輸入特定於 JDBC 驅動程式和資料庫供應商的特定資料。繼續操作之前,請先收集以下資訊:

編輯 JDBC 連線池

[編輯 JDBC 連線池] 頁面為您提供了變更現有池的所有設定 (池的名稱除外) 的方法。

  1. 變更一般設定。

    一般設定的值取決於安裝的特定 JDBC 驅動程式。這些設定是 Java 程式設計語言中的類別名稱或介面名稱。

    參數 

    說明 

    資料來源類別名稱 

    實作 DataSource 和/或 XADataSource API 特定供應商的類別名稱。該類別位於 JDBC 驅動程式中。

    資源類型 

    選項包括 javax.sql.DataSource (僅限於本機作業事件)、javax.sql.XADataSource (全域作業事件) 和 java.sql.ConnectionPoolDataSource (本機作業事件,可能會改善效能)。

  2. 變更池設定。

    一組實體資料庫連線保存在池中。應用程式請求連線時,將從池中移除該連線;而應用程式釋放該連線之後,連線將傳回到池中。

    參數 

    說明 

    池的初始大小和最小大小 

    池中連線的最小數目。此值還決定首次建立池或 Application Server 啟動時,置於池中的連線數目。 

    最大池大小 

    池中連線的最大數目。 

    池設定大小數量 

    當池分別朝著最大池大小向上調整,以及朝著最小池大小向下調整時,會以批次方式調整。此值確定批次中的連線數目。將此值設置過大會延遲連線建立和資源回收;而將該值設置過小則會導致效率降低。 

    閒置逾時 

    連線可以在儲存區中閒置的最大時間 (以秒表示)。一旦超過此時間,即從池中移除該連線。 

    最大等待時間 

    請求連線的應用程式在達到連線逾時之前等待的時間。由於預設等待時間過長,應用程式可能會出現無限期當機的情況。 

  3. 變更連線驗證設定。

    您也可以在將連線傳送給應用程式之前,讓 Application Server 驗證連線。當由於網路出現故障或資料庫伺服器當機造成資料庫不可用時,此驗證可允許 Application Server 自動重新建立資料庫連線。連線驗證會耗用額外的時間,並會略微降低效能。

    參數 

    說明 

    連線驗證 

    選取 [需要] 核取方塊以啟用連線驗證。 

    驗證方法 

    Application Server 可以使用三種方法來驗證資料庫連線:auto-commit、metadata 和 table。 

    auto-commit 和 metadata - Application Server 透過呼叫 con.getAutoCommit() 方法和 con.getMetaData() 方法來驗證連線。


    備註 –

    由於許多 JDBC 驅動程式快取了這些呼叫的結果,因此這兩種方法無法始終提供可靠的驗證。請與驅動程式供應商進行核實,以確定這些呼叫是否被快取。


    table - 應用程式將查詢指定的資料庫表格。此表必須存在並且可以存取,但不要求表的列數。請勿使用包含許多列的現有表或經常存取的表。 

    表格名稱 

    如果從 [驗證方法] 組合方塊中選取了表,請在此處指定資料庫表格的名稱。 

    一旦失敗 

    選取標記為 [關閉所有連線] 的核取方塊之後,如果單一連線失敗,Application Server 將關閉池中的所有連線,然後重新建立這些連線。如果未選取此核取方塊,則僅在要使用個別連線時才會重新建立這些連線。 

    允許非元件呼叫者 

    若要讓非元件呼叫者 (例如 Servlet 篩選和生命週期模組) 使用此連線池,請按一下此核取方塊。 

  4. 變更作業事件隔離設定。

    由於許多使用者通常可以同步運作地存取一個資料庫,因此可能出現一個作業事件在更新資料而另一個作業事件嘗試讀取同一資料的情況。作業事件的隔絕層級定義了正在更新的資料對於其他作業事件的可視程度。如需有關隔絕層級的詳細資訊,請參閱資料庫供應商的文件。

    參數 

    說明 

    非作業事件連線 

    如果您要 Application Server 傳回所有非作業事件連線,請按一下核取方塊。 

    作業事件隔離 

    使您可以為該池的連線選取作業事件隔絕層級。如果不指定此參數,連線將使用 JDBC 驅動程式提供的預設隔絕層級進行作業。 

    保證的隔離層級 

    該項僅在指定了隔絕層級的情況下才適用。如果選取 [受保證] 核取方塊,則從池中獲取的所有連線都具有相同的隔絕層級。例如,如果上次使用連線時程式化 (使用 con.setTransactionIsolation) 變更了連線的隔離層級,這種機制會將狀態變更回指定的隔離層級。

  5. 變更特性。

    在 [附加特性] 表中,可以指定資料庫名稱 (URL)、使用者名稱和密碼等特性。由於隨資料庫供應商的不同,特性也會有所不同,因此請查閱供應商文件以取得詳細資訊。

編輯 JDBC 連線池進階屬性

為了協助診斷連線漏失並改善易於使用性,Application Server 9.1 提供了數種新屬性,讓您在建立連線池時進行配置。

  1. 開啟 [進階] 標籤並指定下列屬性。

    屬性 

    說明 

    名稱 

    要編輯之特性所屬的 JDBC 連線池名稱。不過您無法變更池名稱。 

    敘述逾時 

    查詢執行時間如果過久,則在經過這段時間後 (以秒為單位) 即需終止。Application Server 將在建立的敘述上設定「查詢逾時」。預設值 -1 表示屬性未啟用。 

    環繞 JDBC 物件 

    設為 true 時,應用程式將為 Statement、PreparedStatement、CallableStatement、ResultSet、DatabaseMetaData 取得環繞的 JDBC 物件。預設值為 false。 

  2. 如下表所示指定連線設定。

    屬性 

    說明 

    最多驗證一次 

    經過這段時間後 (以秒為單位),最多只驗證一次連線。這將有助於減少連線的驗證請求數。預設值 0 表示不啟用連線驗證。 

    漏失逾時 

    用來追蹤連線池中連線漏失的時間量 (以秒為單位)。預設值 0 表示停用連線漏失追蹤。如果啟用連線漏失追蹤,可在 [監視資源] 標籤中取得連線漏失數統計資料。若要檢視此標籤,請前往 [Application Server ] > [監視] > [資源]。 

    漏失收回 

    如果啟用此選項,則會在完成漏失連線追蹤後,將漏失的連線復原到池中。 

    建立重新嘗試次數 

    如果建立新連線失敗,將進行的嘗試次數。預設值 0 表示不再嘗試重新建立連線。 

    重試間隔 

    指定兩次嘗試建立連線的時間間隔 (以秒為單位)。預設值是 10 秒。唯有當「建立重試次數」值大於 0 時,才能使用此屬性。 

    惰性連線登記 

    啟用此選項可將資源登記至作業事件,但資源必須實際用於方法中。 

    惰性關聯 

    對連線執行作業時,連線才會產生惰性關聯。此外,完成作業事件及結束元件方法時,也會取消連線的關聯,如此將有助於重複使用實體連線。預設值為 false。 

    與執行緒建立關聯 

    啟用此選項可使連線與執行緒產生關聯,如此當相同的執行緒需要連線時,就可以重複使用與該執行緒已產生關聯的連線,藉此避免產生從池中取得連線的經常性耗用時間。預設值為 false。 

    相符連線 

    使用此選項可開啟/關閉池的連線比對功能。如果管理員知道池中連線一律是同質的,因此從池中挑選連線時不需要由資源配接卡比對,則可將此選項設為 false。預設值為 false。 

    最大連線使用率 

    指定池可以重複使用連線的次數。重複使用指定次數的連線後,就會關閉連線。例如,這對避免敘述錯誤這類情形很有用。預設值 0 表示不會重複使用連線。 

關於 JDBC 資源

JDBC 資源 (資料源) 為應用程式提供連線至資料庫的方法。

建立 JDBC 資源之前,先建立 JDBC 連線池。

建立 JDBC 資源時,必須指定:

  1. JNDI 名稱。依照慣例,該名稱應以 jdbc/ 字串開頭。例如︰jdbc/payrolldb 。請勿遺漏正斜線。

  2. 選取要和新的 JDBC 資源相關聯的連線池。

  3. 指定資源的設定。

  4. 指定具有可用資源的目標 (叢集和獨立伺服器實例)。

特定 JDBC 驅動程式的配置

Application Server 9.1 支援以對應的 JDBC 驅動程式連結至任何資料庫管理系統。下列是受支援的 JDBC 驅動程式和資料庫組合。這些組合已經過 Application Server 9.1 測試,並與 J2EE 相容。它們也支援 CMP。

如需目前受支援之 JDBC 驅動程式的最新清單,請參閱「Sun Java System Application Server 9.1 版本說明」

其他 JDBC 驅動程式可與 Application Server 9.1 搭配使用,但尚未對這些驅動程式進行 J2EE 相容性測試。雖然 Sun 未提供這些驅動程式的產品支援,但 Sun 提供了這些驅動程式與 Application Server 9.1 搭配使用的有限支援。

如需如何整合 JDBC 驅動程式,以及如何使用管理主控台或指令行介面來實作配置的更多資訊,請參閱「Sun Java System Application Server 9.1 管理指南」


備註 –

如果執行 capture-schema 指令的 Oracle 資料庫使用者不具有模式,則該使用者需要 ANALYZE ANY TABLE 權限。這些權限是由資料庫管理員授予使用者。如需有關 capture-schema 的資訊,請參閱「Sun Java System Application Server 9.1 Reference Manual」


Derby 類型 4 驅動程式

Derby JDBC 驅動程式預設隨附於 Application Server,但 Solaris 隨附安裝除外 (不含 Derby)。因此除非您擁有的是 Solaris 隨附安裝,否則不需要整合此 JDBC 驅動程式與 Application Server。

Derby 驅動程式的 JAR 檔案是 derbyclient.jar

請使用下列設定來配置連線池:

DB2 資料庫的 Sun Java System JDBC 驅動程式

此驅動程式的 JAR 檔案是 smbase.jarsmdb2.jarsmutil.jar。請使用下列設定來配置連線池:

Oracle 8.1.7 和 9.x 資料庫的 Sun Java System JDBC 驅動程式

此驅動程式的 JAR 檔案是 smbase.jarsmoracle.jarsmutil.jar。請使用下列設定來配置連線池:

Microsoft SQL Server 資料庫的 Sun Java System JDBC 驅動程式

此驅動程式的 JAR 檔案是 smbase.jarsmsqlserver.jarsmutil.jar。請使用下列設定來配置連線池:

Sybase 資料庫的 Sun Java System JDBC 驅動程式

此驅動程式的 JAR 檔案是 smbase.jarsmsybase.jarsmutil.jar。請使用下列設定來配置連線池:

IBM DB2 8.1 類型 2 驅動程式

DB2 驅動程式的 JAR 檔案是 db2jcc.jardb2jcc_license_cu.jardb2java.zip。如下所示設定環境變數:

LD_LIBRARY_PATH=/usr/db2user/sqllib/lib:${j2ee.home}/lib
DB2DIR=/opt/IBM/db2/V8.1
DB2INSTANCE=db2user
INSTHOME=/usr/db2user
VWSPATH=/usr/db2user/sqllib
THREADS_FLAG=native

請使用下列設定來配置連線池:

Sybase ASE 12.5 資料庫的 JConnect 類型 4 驅動程式

Sybase 驅動程式的 JAR 檔案是 jconn2.jar。請使用下列設定來配置連線池:

MM MySQL 類型 4 驅動程式 (非 XA)

MySQL 驅動程式的 JAR 檔案是 mysql-connector-java- version-bin-g.jar,例如,mysql-connector-java-3.1.12-bin-g.jar。請使用下列設定來配置連線池:

MM MySQL 類型 4 驅動程式 (僅限 XA)

MySQL 驅動程式的 JAR 檔案是 mysql-connector-java- version-bin-g.jar,例如,mysql-connector-java-3.1.12-bin-g.jar。請使用下列設定來配置連線池:

Oracle 8.1.7 和 9.x 資料庫的 Inet Oraxo JDBC 驅動程式

Inet Oracle 驅動程式的 JAR 檔案是 Oranxo.jar。請使用下列設定來配置連線池:

Microsoft SQL Server 資料庫的 Inet Merlia JDBC 驅動程式

Inet Microsoft SQL Server 驅動程式的 JAR 檔案是 Merlia.jar 。請使用下列設定來配置連線池:

Sybase 資料庫的 Inet Sybelux JDBC 驅動程式

Inet Sybase 驅動程式的 JAR 檔案是 Sybelux.jar。請使用下列設定來配置連線池:

Oracle 8.1.7 和 9.x 資料庫的 Oracle Thin 類型 4 驅動程式

Oracle 驅動程式的 JAR 檔案是 ojdbc14.jar。請使用下列設定來配置連線池:

Oracle 8.1.7 和 9.x 資料庫的 OCI Oracle 類型 2 驅動程式

OCI Oracle 驅動程式的 JAR 檔案是 ojdbc14.jar。請確定可透過 LD_LIBRARY_PATH 使用共用程式庫,並已設定 ORACLE_HOME 特性。請使用下列設定來配置連線池:

IBM Informix 類型 4 驅動程式

請使用下列設定來配置連線池:

CloudScape 5.1 類型 4 驅動程式

CloudScape 驅動程式的 JAR 檔案是 db2j.jardb2jtools.jardb2jcview.jarjh.jardb2jcc.jardb2jnet.jar。請使用下列設定來配置連線池: