Sun Java System Application Server Enterprise Edition 8.1 2005Q2 管理指南

第 3 章 JDBC 資源

本章說明如何配置存取資料庫的應用程式所要求使用的 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 資源,應用程式獲得一個資料庫連線。

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

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

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

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

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

設定資料庫存取

Procedure設定資料庫存取

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

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

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

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

  4. 建立資料庫。

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

  5. 為資料庫建立連線池。請參閱建立 JDBC 連線池

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

Procedure整合 JDBC 驅動程式

JDBC 驅動程式可將應用程式的 JDBC 呼叫翻譯為資料庫伺服器的協定。

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

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

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

      2. 重新啟動該網域。

    • 使系統類別載入器可以存取該驅動程式。

      1. 在 管理主控台 的樹狀結構檢視 (左窗格) 中,選取 [配置]。

      2. 選取所需的配置 (例如 default-config)。

      3. 選取 [JVM 設定]。

      4. 在 [JVM 設定] 頁面中,按一下 [路徑設定] 標籤。

      5. 在 [類別路徑後綴] 欄位中,輸入驅動程式之 JAR 檔案的完全合格的路徑名稱。

      6. 按一下 [儲存]。

      7. 重新啟動伺服器。

關於 JDBC 連線池

Procedure建立 JDBC 連線池

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

開始之前

建立池之前,您必須首先安裝並整合 JDBC 驅動程式。請參閱整合 JDBC 驅動程式

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

  1. 在 管理主控台 的樹狀結構檢視 (左窗格) 中,展開 [資源] 節點。

  2. 在 [資源] 節點下,展開 [JDBC] 節點。

  3. 在 [JDBC] 節點下,選取 [連線池] 節點。

  4. 在 [連線池] 頁面中,按一下 [新建]。

  5. 在 [建立連線池] 的第一個頁面中,指定以下一般設定:

    1. 在 [名稱] 欄位中,輸入池的邏輯名稱。

      建立 JDBC 資源時指定此名稱。

    2. 從 [資源類型] 組合方塊中選取一個項目。

    3. 從 [資料庫供應商] 組合方塊中選取一個項目。

  6. 按 [下一步]。

  7. 在 [建立連線池] 的第二個頁面中,為 [DataSource 類別名稱] 欄位指定值。

    如果 JDBC 驅動程式具有與在上一頁中指定的資源類型和資料庫供應商相應的 DataSource 類別,則系統會提供 [DataSource 類別名稱] 欄位的值。

  8. 按 [下一步]。

  9. 在 [建立連線池] 的第三個也就是最後一個頁面中,執行以下作業:

    1. 在 [一般設定] 區段中,檢驗各個值是否正確。

    2. 對於 [池設定]、[連線驗證] 和 [作業事件隔絕] 區段中的欄位,保留預設值。

      您可以在以後非常方便地變更這些設定。請參閱編輯 JDBC 連線池

    3. 在 [附加特性] 表中,新增必需的特性,例如資料庫名稱 (URL)、使用者名稱和密碼。

  10. 按一下 [完成]。

等效的 asadmin 指令

create-jdbc-connection-pool

Procedure編輯 JDBC 連線池

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

  1. 在樹形元件中,展開 [資源] 節點。

  2. 在 [資源] 節點下,展開 [JDBC] 節點。

  3. 在 [JDBC] 節點下,展開 [連線池] 節點。

  4. 選擇要編輯的池的節點。

  5. 在 [編輯 JDBC 連線池] 頁面中,進行必要的變更。

    1. 變更一般設定。

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

      參數 

      說明 

      DataSource 類別名稱 

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

      資源類型 

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

    2. 變更池設定。

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

      參數 

      說明 

      池的初始大小和最小大小 

      池中連線的最小數目。該值還確定了首次建立池或應用程式伺服器啟動時置於池中的連線的數目。 

      池的最大大小 

      池中連線的最大數目。 

      池設定大小數量 

      當池向最小池大小收縮時,將成批調整大小。此值確定批次中的連線數目。將該值設置過大會延遲連線循環;而將該值設置過小則會導致效率降低。 

      閒置逾時 

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

      最長等待時間 

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

    3. 變更連線驗證設定。

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

      參數 

      說明 

      連線驗證 

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

      驗證方法 

      應用程式伺服器可以使用三種方法來驗證資料庫連線:auto-commit、metadata 和 table。 

      auto-commit 和 metadata - Application Server 透過呼叫 con.getAutoCommit() 方法和 con.getMetaData() 方法來驗證連線。但是,由於許多 JDBC 驅動程式快取了這些呼叫的結果,因此這兩種方法無法始終提供可靠的驗證。請與驅動程式供應商進行核實,以確定這些呼叫是否被快取。

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

      表格名稱 

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

      一旦失敗 

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

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

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

      參數 

      說明 

      作業事件隔絕 

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

      受保證隔絕層級 

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

    5. 變更特性。

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

  6. 按一下 [儲存]。

另請參閱

Procedure驗證連線池設定

  1. 啟動資料庫伺服器。

  2. 按一下 [Ping]。

    管理主控台 將嘗試連線至資料庫。如果顯示錯誤訊息,請檢查資料庫伺服器是否已重新啟動。

Procedure刪除 JDBC 連線池

  1. 在樹形元件中,展開 [資源] 節點。

  2. 在 [資源] 節點下,展開 [JDBC] 節點。

  3. 在 [JDBC] 節點下,選取 [連線池] 節點。

  4. 在 [連線池] 頁面中,選取要刪除的池的核取方塊。

  5. 按一下 [刪除]。

等效的 asadmin 指令

delete-jdbc-connection-pool

關於 JDBC 資源

Procedure建立 JDBC 資源

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

開始之前

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

  1. 在樹形元件中,展開 [資源] 節點。

  2. 在 [資源] 節點下,展開 [JDBC] 節點。

  3. 在 [JDBC] 節點下,選取 [JDBC 資源] 節點。

  4. 在 [JDBC 資源] 頁面中,按一下 [新建]。

  5. 在 [建立 JDBC 資源] 頁面中,指定資源的設定:

    1. 在 [JNDI 名稱] 欄位中,鍵入專屬名稱。

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

    2. 從 [池名稱] 組合方塊中選擇要與新的 JDBC 資源關聯的連線池。

    3. 如果要使資源不可用,請取消選取 [啟用] 核取方塊。

      依預設,建立資源之後立即可以使用資源 (已啟用)。

    4. 在 [描述] 欄位中,鍵入資源的簡短描述。

    5. 在 [目標] 區段,指定具有可用資源的目標 (叢集和獨立伺服器實例)。

      在左側選取所需的目標,然後按一下 [增加] 以將其增加到選取目標的清單中。

  6. 按一下 [確定]。

等效的 asadmin 指令

create-jdbc-resource

Procedure編輯 JDBC 資源

  1. 在樹形元件中,展開 [資源] 節點。

  2. 在 [資源] 節點下,展開 [JDBC] 節點。

  3. 在 [JDBC] 節點下,展開 [JDBC 資源] 節點。

  4. 選取要編輯的 JDBC 資源的節點。

  5. 在 [編輯 JDBC 資源] 頁面中,可以執行以下作業:

    1. 從 [池名稱] 組合方塊中選取其他連線池。

    2. 在 [描述] 欄位中,變更資源的簡短描述。

    3. 選取或取消選取核取方塊以啟用或停用資源。

    4. 選取 [目標] 標籤,以變更具有可用資源的目標 (叢集和獨立伺服器實例)。

      選取清單中的現有目標的核取方塊,然後按一下 [啟用] 以啟用該目標的資源,或者按一下 [停用] 以停用該目標的資源。

      按一下 [管理目標] 可以在清單中增加或移除目標。在 [管理目標] 頁面中,從左側的 [可用] 清單中選取所需的目標,然後按一下 [增加] 以將其增加到選取目標的清單中。按一下 [移除] 可以從 [已選取] 清單中移除目標。

      按一下 [確定] 以儲存對可用目標的變更。

  6. 按一下 [儲存] 以套用編輯。

Procedure刪除 JDBC 資源

  1. 在樹形元件中,展開 [資源] 節點。

  2. 在 [資源] 節點下,展開 [JDBC] 節點。

  3. 在 [JDBC] 節點下,選取 [連線池] 節點。

  4. 在 [連線池] 頁面中,選取要刪除的池的核取方塊。

  5. 按一下 [刪除]。

Procedure啟用或停用 JDBC 資源

  1. 在樹形元件中,展開 [JDBC 資源] 節點或展開 [獨立實例] 以選取 [伺服器實例節點資源] 標籤。

  2. 在 [資源] 頁面中,選取要啟用或停用的資源的核取方塊。

  3. 按一下 [啟用] 或 [停用]。

關於持續性管理程式資源

Procedure建立持續性管理員資源

向下相容性需要此功能。若要在 Application Server 7 版本上執行,使用容器管 理的持續性 Bean (一種 EJB 元件) 的應用程式需要持續性管理員資源。建議改為使用 JDBC 資源。

  1. 在樹形元件中,展開 [資源] 節點。

  2. 在 [資源] 節點下,選取 [持續性管理程式] 節點。

  3. 在 [持續性管理程式] 頁面中,按一下 [新建]。

  4. 在 [建立持續性管理程式] 頁面中,指定以下設定:

    1. 在 [JNDI 名稱] 欄位中,鍵入專屬名稱。

      例如︰ jdo/mypm. 請勿遺漏正斜線。

    2. 在 [工廠類別] 欄位中,保留此版本提供的預設類別,或鍵入其他實作類別。

    3. 從 [連線池] 組合方塊中選擇新的持續性管理程式資源所屬的連線池。

    4. 若要停用新的持續性管理員資源,請取消選取 [啟用] 核取方塊。

      依預設,將啟用新的持續性管理程式資源。

    5. 在 [目標] 區段,指定具有可用資源的目標 (叢集和獨立伺服器實例)。

      在左側選取所需的目標,然後按一下 [增加] 以將其增加到選取目標的清單中。

  5. 按一下 [確定]。

等效的 asadmin 指令

create-persistence-resource

Procedure編輯持續性管理員資源

  1. 在 [編輯持續性管理程式特性] 標籤中,選取 [增加特性] 按鈕。

    [附加特性] 表中將增加一個新列。

  2. 增加所需的特性和值。

Procedure管理資源目標

  1. 選取 [目標] 標籤,以變更資源所在的目標 (叢集和獨立伺服器實例)。

  2. 選取清單中的現有目標的核取方塊,然後按一下 [啟用] 以啟用該目標的資源,或者按一下 [停用] 以停用該目標的資源。

  3. 按一下 [管理目標] 可以在清單中增加或移除目標。

    在 [管理目標] 頁面中,從左側的 [可用] 清單中選取所需的目標,然後按一下 [增加] 以將其增加到選取目標的清單中。按一下 [移除] 可以從 [已選取] 清單中移除目標。

  4. 按一下 [確定] 以儲存對可用目標的變更。

  5. 按一下 [儲存]。

Procedure刪除持續性管理員資源

  1. 在樹形元件中,展開 [持續性管理程式] 節點。

  2. 選取 [持續性管理程式] 節點。

  3. 在 [持續性管理程式] 頁面中,選取要刪除的持續性管理程式的核取方塊。

  4. 按一下 [刪除]。

等效的 asadmin 指令

delete-persistence-resource

Procedure啟用或停用持續性管理員資源

  1. 在樹形元件中,展開 [持續性管理程式] 節點。

  2. 選取要啟用或停用的資源的核取方塊。

  3. 按一下 [啟用] 或 [停用]。