新四季網

一種資料庫連接池的監控方法及裝置的製作方法

2023-09-18 03:08:25

專利名稱:一種資料庫連接池的監控方法及裝置的製作方法
技術領域:
本發明涉及JAVA應用技術領域,尤其涉及一種資料庫連接池的監控方法及裝置。
背景技術:
JAVA是由Sun Microsystems公司推出的JAVA程序設計語言和JAVA平臺的總稱。 JAVA程序設計語言(簡稱JAVA語言)是一種面向對象的、分布式的、健壯安全的、結構中 立的、可移植的、多線程的動態語言。JAVA平臺由JAVA虛擬機(Virtual Machine,VM)和 JAVA 應用程式接口 (ApplicationProgramming Interface,API)構成。JAVAAPI 為 JAVA 應 用程序提供獨立於作業系統的標準接口,其中JDBC (JAVA Data Base Connectivity, JAVA 資料庫連接)是用於執行SQL (Structured Query Language,結構化查詢語言)語句的JAVA API,JDBC由一組採用JAVA語言編寫的類和接口組成,可以與資料庫建立連接、發送SQL語 句並處理執行結果。SQL是一種資料庫查詢的程序設計語言,用於存取數據以及查詢、更新 和管理關係資料庫系統。在基於JAVA的應用系統中,尤其是面向企業用戶的應用系統,資料庫訪問是其核 心技術之一。為了解決頻繁訪問資料庫時存在的系統資源開銷大、響應速度慢、系統穩定性 低、內存洩漏等問題,應用系統中引入了資料庫連接池技術。資料庫連接池的基本思想是為 資料庫連接建立一個「緩衝池」。資料庫連接池在初始化時將創建一定數量的資料庫連接 放入資料庫連接池中,初始創建的資料庫連接的數量由設定的最小連接數確定,同時設定 資料庫連接池的最大連接數以防止應用系統與資料庫的無盡連接。當需要建立資料庫連接 時,只需從資料庫連接池中取出一個資料庫連接,使用完畢之後再將該資料庫連接放回數 據庫連接池即可,既避免了資料庫連接的頻繁建立、關閉所帶來的系統資源開銷,又使得每 一個資料庫連接得以高效、安全的復用。現有技術中,資料庫連接池中緩存資料庫連接,能夠減少系統資源開銷,但是無法 監控每個資料庫連接所執行的資料庫操作,一旦業務使用資料庫連接的時間超長或者執行 非法資料庫操作會導致資料庫連接池發生異常情況,資料庫連接池只能捕獲到異常情況的 發生,但是無法定位是由哪個業務執行的哪個SQL語句導致的異常。為了避免大量日誌帶 來的系統資源開銷,也不可能在日誌中記錄各業務執行的所有SQL語句,使得運行多個業 務或者業務執行的SQL語句較多時,針對異常情況的問題定位尤其困難。

發明內容
本發明實施例提供一種資料庫連接池的監控方法及裝置,用以實現對資料庫連接 執行的SQL語句的跟蹤,從而為準確、快速地實現資料庫連接池中異常情況的問題定位提
供基礎。一種資料庫連接池的監控方法,包括從資料庫連接池中獲取資料庫連接;基於獲取到的資料庫連接創建用於執行結構化查詢語言SQL語句的JAVA資料庫連接JDBC接口實現類的對象實例,並根據所述JDBC接口實現類所繼承的公共參數類定義 的實現SQL語句跟蹤需要使用的變量和方法,保存所述資料庫連接所創建的所有對象實例 及其SQL語句跟蹤信息;在使用獲取到的資料庫連接執行資料庫操作的過程中,監控到資料庫連接池中出 現異常情況時,獲取所述資料庫連接所創建的所有對象實例;並針對每一個對象實例,獲得該對象實例的SQL語句跟蹤信息。一種資料庫連接池的監控裝置,包括獲取單元,用於從資料庫連接池中獲取資料庫連接;
創建單元,用於基於獲取到的資料庫連接創建用於執行結構化查詢語言SQL語句 的JAVA資料庫連接JDBC接口實現類的對象實例,並根據所述JDBC接口實現類所繼承的公 共參數類定義的實現SQL語句跟蹤需要使用的變量和方法,保存所述資料庫連接所創建的 所有對象實例及其SQL語句跟蹤信息;監控單元,用於在使用獲取到的資料庫連接執行資料庫操作的過程中,監控到數 據庫連接池中出現異常情況時,獲取所述資料庫連接所創建的所有對象實例;獲得單元,用於針對每一個對象實例,獲得該對象實例的SQL語句跟蹤信息。本發明實施例提供的資料庫連接池的監控方法及裝置,實時緩存每一個資料庫連 接執行資料庫操作的過程中相關的SQL語句跟蹤信息,在資料庫連接池出現異常情況時獲 得上述SQL語句跟蹤信息,從而實現對資料庫連接執行的SQL語句的跟蹤,為準確、快速地 實現資料庫連接執行資料庫操作的過程中異常情況的問題定位提供基礎,提高資料庫連接 池的穩固性。本發明的其它特徵和優點將在隨後的說明書中闡述,並且,部分地從說明書中變 得顯而易見,或者通過實施本發明而了解。本發明的目的和其他優點可通過在所寫的說明 書、權利要求書、以及附圖中所特別指出的結構來實現和獲得。


圖1為本發明實施例中改進後的資料庫連接池內部類關係示意圖;圖2為本發明實施例中改進後的資料庫連接池各關鍵內部類的結構示意圖;圖3為本發明實施例中創建資料庫連接的方法流程圖;圖4為本發明實施例中資料庫連接池的監控方法流程圖;圖5為本發明實施例中創建PoolPreparedStatement對象實例的方法;圖6為本發明實施例中資料庫連接池的監控裝置框圖。
具體實施例方式本發明實施例提供一種JAVA應用程式中的資料庫連接池的監控方法及裝置,用 以實現對資料庫連接執行的SQL語句的跟蹤,從而為準確、快速的定位在JAVA應用過程中 資料庫連接池中出現的異常情況提供基礎。以下結合說明書附圖對本發明的優選實施例進行說明,應當理解,此處所描述的 優選實施例僅用於說明和解釋本發明,並不用於限定本發明,並且在不衝突的情況下,本發 明中的實施例及實施例中的特徵可以相互組合。
本發明人發現,為了實現對資料庫連接執行的SQL語句的跟蹤,從而為準確、快速地實現資料庫資源池中異常情況的問題定位提供基礎,提高資料庫連接池的穩固性,需要 對資料庫連接池進行改進,實時緩存各資料庫連接執行資料庫操作的過程中的SQL語句跟 蹤信息,例如資料庫連接池中各資料庫連接所執行的SQL語句及其執行時間,以便在發生 異常情況時能夠準確、快速地定位出由哪個業務執行的哪個SQL語句導致的異常。在基於JAVA的應用系統中,JDBC是用於執行SQL語句的JAVA API, JDBC由一組 採用JAVA語言編寫的類和接口組成。本發明實施例中,同樣使用JDBC技術訪問資料庫,基 於JDBC提供的接口實現對資料庫連接執行的SQL語句的跟蹤。改進後的資料庫連接池內部類關係示意圖請參見圖1(在圖1中JDBC標準資料庫 接口類簡稱JDBC接口類),下面結合說明書附圖1對改進後的資料庫連接池中各內部類及 其相互關係進行說明,其中[1] StatementUtil 公共參數類,用於定義實現SQL語句跟蹤需要使用的變量和 方法,包括JDBC標準資料庫接口類Statement所屬的Connection對象實例即資料庫連接、 Statement對象實例、Statement對象實例開始執行資料庫操作即SQL語句的時間等等,公 共參數類StatementUtil是改進後的資料庫連接池中其他內部Statement實現類的基類;[2] PoolStatement 資料庫連接池內部實現Statement類,繼承公共參數類 StatementUti 1,並實現 JDBC 標準資料庫接口類 Statement,即 PoolStatement 是 JDBC 標準 資料庫接口類Statement對應的JDBC接口實現類;[3] PoolPreparedStatement 資料庫連接池內部實現 PreparedStatement 類,繼承JDBC接口實現類PoolStatement,並實現JDBC標準資料庫接口類 PreparedStatement (JDBC 標準資料庫接 口類 Pi^paredStatement 繼承 JDBC 標準 資料庫接口類Statement),即PoolPi^paredStatement是JDBC標準資料庫接口類 PreparedStatement 對應的 JDBC 接口 實現類;[4] PoolCal IableStatement 資料庫連接池內部實現 CallableStatement 類,繼承JDBC接口實現類PoolPi^paredStatement,並實現JDBC標準資料庫接口類 CallableStatement (JDBC 標準資料庫接口類 CallableStatement 繼承 JDBC 標準數據 庫接口類 Pi^paredStatement),即 PoolCallableStatement 是 JDBC 標準資料庫接口類 CallableStatement 對應的 JDBC 接口 實現類;[5]PoolConnection 資料庫連接池內部定義Connection接口類,定義獲取數據 庫連接相關信息的方法,例如獲取資料庫連接所在資料庫連接池的方法,獲取資料庫連接 的創建時間的方法;[6]PoolConnectionImpl 資料庫連接池內部Connection實現類,實現JDBC標準 資料庫接口類Connection和資料庫連接池內部定義Connection接口類PoolConnection, 資料庫連接池中緩存一定數量的PoolConnectionlmpl對象實例,即PoolConnectionlmpl 是JDBC標準資料庫接口類Connection對應的JDBC接口實現類;[7] getConection 資料庫連接池中的基本方法,通過調用該方法能夠獲取數據 庫連接,改進後的資料庫連接池中,該方法返回的是PoolConnectionlmpl對象實例,由於 PoolConnectionlmpl實現了 JDBC標準資料庫接口,因此對業務來說仍然使用Connection 對象實例的方法;
[8] createStatement JDBC標準資料庫接口類Connection定義的方法,通過調 用該方法能夠獲得Statement對象實例,進而通過一系列執行方法實現資料庫操作;[9] prepareStatement JDBC 標準資料庫接 口 類 Connection 定義的方法,通過 調用該方法能夠獲得Pr印aredStatement對象實例,進而通過一系列執行方法實現資料庫 操作;[10]prepareCallO JDBC標準資料庫接口類Connection定義的方法,通過調用 該方法能夠獲得CallableStatement對象實例,進而通過一系列執行方法實現資料庫操作。改進後的資料庫連接池中各關鍵內部類的結構示意圖如圖2所示,下面對改進後 的資料庫連接池中幾個關鍵內部類的關鍵元素進行說明。在此之前,對現有技術中資料庫連接池實現類CormectionPoolImpl的幾個關鍵 元素進行說明1)變量managed =ArrayList類型,用於緩存資料庫連接池中的資料庫連接,即 Connection對象實例;相應的,本發明實施例中緩存一定數量的PoolConnectionlmpl對象 實例;2)newPooledConnection該方法用於創建資料庫連接,返回 PoolConnectionlmpl對象實例(等同於普通連接池中的Connection對象實例),資料庫連 接池將創建的資料庫連接放入變量managed中緩存;3)getConection該方法用於獲取資料庫連接供業務使用,返回 PoolConnectionlmpl對象實例(等同於普通連接池中的Connection對象實例)。在現有資料庫連接池實現類CormectionPoolImpl的基礎上,對改進後的資料庫 連接池中內部Connection實現類PoolConnectionlmpl的關鍵元素進行說明1)變量conn Connection對象實例,用於完成各種資料庫操作;2)變量pool :ConnectionPoolImpl對象實例,用於保存該資料庫連接所屬的數據 庫連接池對象;3) statementSet =Set對象實例,用於保存資料庫連接所創建的Statement對象實例,也是StatementUtil子類的對象實例,以便從中獲取該資料庫連接執行的SQL語句以及 執行時間等SQL語句跟蹤信息;4)變量createTime 資料庫連接的創建時間;5)變量lastCheckinTime 資料庫連接上次被使用之後釋放的時間;6)變量lastCheckoutTime 資料庫連接上次被獲取的時間,可以結合 IastCheckinTime確定資料庫連接的使用時間以及本次使用是否被釋放;7) addStatement (Statement)將入參 Statement 對象實例添力口至Ij statementSet 集合變量中,資料庫連接創建Statement對象實例時調用該方法;8)removeAll Statements 清空 statementSet 中的所有 Statement 對象實例, 資料庫連接被釋放時調用該方法;9)poolStatement (Statement)用於創建 PoolStatement 對象實例,Statement 對 象實例作為入參,並保存在PoolStatement對象實例中,該方法返回創建的PoolStatement 對象實例;
10) poolPreparedStatement (PreparedStatement) 用於倉1J 建 PoolPreparedStatement對象實例,PreparedStatement對象實例作為入參,並保存在 PoolPreparedStatement對象實例中,該方法返回創建的PoolPreparedStatement對象實 例;IDpoolCallableStatement (CallableStatement)用 於倉丨J 建 PoolCallableStatement對象實例,CallableStatement對象實例作為入參,並保存在 PoolCallableStatement對象實例中,該方法返回創建的PoolCallableStatement對象實 例;12)createStatement實現 Connection 接口 中的方法,用於創建 Statement 對 象實例,並將其作為入參調用方法PoolStatementO以創建PoolStatement對象實例,同時 調用方法addStatement ,最終返回創建的PoolStatement對象實例;13)prepareStatement實現 Connection 接口中的方法,用於倉ij 建 PreparedStatement對象實例,並將其作為入參調用方法poolPr印aredStatement 以創 建PooIPi^paredStatement對象實例,同時調用方法addStatement O,最終返回創建的 PoolPreparedStatement 對象實例;14)prepareCall實現 Connection 接 口中的方法,用於創建 CallableStatement對象實例,並將其作為入參調用方法poolCallableStatement 以創 建PoolCallableStatement對象實例,同時調用方法addSta tement ,最終返回創建的 PoolCallableStatement 對象實例。最後,對改進後的資料庫連接池中公共參數類StatementUtil的關鍵元素進行說 明1) ^M pooledConnection Statement X^^^MlifM W PoolConnectionImp 1 象實例;2)變量statement 本對象實例關聯的Statement對象實例;3)變量StartExecTime Statement對象實例開始執行資料庫操作的時間;4)變量putedParameters =List類型,用於保存Statement對象實例的參數;5)變量executeFlag 執行標誌,其中executeFlag取值為O表示未執行, executeFlag 取值為 1 表不執行 commonSql, executeFlag 取值為 2 表不執行 preparedSql, executeFlag取值為3表示執行batchSql ;6) batchSql =List 類型,用於保存 executeBatch 時的 SQL 語句;7) preparedSql 用於保存 PreparedStatement 對象實例執行的 SQL 語句;8) commonSql 用於保存Statement對象實例執行的SQL語句;9) StatementUtil =StatementUtil 對象實例的構造函數,入參為 PoolConnectionlmpl對象實例禾口 Statement對象實例,用於初女臺化變量pooledConnection 禾口變量 statement ;10)addParameter 將傳入的參數添力口到變量 putedParameters 中;IDsetExecuteFlagO 設置executeFlag標誌,用於區別當前執行的是哪種SQL 語句; 12) appandBatchSQL 將 SQL 語句添加到 batchSql 中,executeFlag 為 3 時使用該方法;13) setPr印aredSql 設置 pr印aredSql,executeFlag 為 2 時使用該方法;14) setCommonSql 設置 commonSql,executeFlag 為 1 時使用該方法;15) isExecTimeout 判斷執行是否超時,入參為超時時間;16)execute0ver執行結束後調用該方法,清空executeFlag執行標誌位(設置 為0,即表示未執行)以及StartExecTime。下面,詳細闡述改進後的資料庫連接池的實現原理,主要包括三個方面的內容( 一 ) JDBC標準資料庫接口類的實現
JDBC 標準資料庫接 口 類包括 Connection、Statement、PreparedStatement> CallableStatement,其中 Connection 定義資料庫連接,Statement、PreparedStatement、 CallabIeStatement分別定義用於執行SQL語句的變量和方法。通過對資料庫連接 池的改進,JDBC 標準資料庫接 口類 Connection、Statement、PreparedStatement> CallableStatement 分別對應 JDBC 接口 實現類 PoolConnectionlmpl、PoolStatement、 Poo IPreparedStatement 禾口 PoolCallableStatement, 艮 口 Connection 禾口 PoolConnectionlmpl 相對應,Statement 禾口 PoolStatement 相對應,PreparedStatement 禾口 PoolPreparedStatement 相對應,CallableStatement 禾口 PoolCallableStatement 相對應。上述JDBC接口實現類既可以作為JDBC標準資料庫接口類使用,又可以增加個性 化的變量和方法,也就是說,資料庫連接池中緩存的是JDBC標準資料庫接口類Connection 對應的JDBC接口實現類PoolConnectionlmpl的對象實例,業務獲取資料庫連接時實際 返回的是PoolConnectionlmpl對象實例,上述改進對業務來說是透明的,業務照常按 照JDBC標準資料庫接口使用資料庫連接。同理,業務通過調用JDBC標準資料庫接口類 Connection 定義的方法 createStatement 、prepareStatement 、prepareCall 獲取 Statement、PreparedStatementΛ CallableStatement 對象實例時,PoolConnectionlmpl 對象實例實際返回的上述JDBC標準資料庫接口類對應的JDBC接口實現類的對象實例,即 PoolStatement、PoolPreparedStatement> PoolCallableStatement 對象實例,上述改進對 業務來說同樣是透明的,業務照常按照JDBC標準資料庫接口進行資料庫操作。( 二)JDBC標準資料庫接口類的擴展對JDBC標準資料庫接口類的擴展體現在增加了兩個方面的內容屬性和繼 承。增加屬性即上述JDBC接口實現類中增加了變量,用於保存相應的對象實例及其 相關信息,例如JDBC接口實現類PoolConnectionlmpl中增加了變量conn(用於保存 Connection對象實例)、pool (用於保存ConnectionPoolImpl對象實例)等等,JDBC 接口 實現類 PoolPreparedStatement 中增力口 了變量 preparedStatement (用於保存 PreparedStatement 對象實例),JDBC 接口 實現類 PoolCallableStatement 中增加了變量 calIableStatement (用於保存CallableStatement對象實例)。增加繼承即JDBC接口實 現類 PoolStatement、PoolPreparedStatement> PoolCallableStatement 實現 JDBC 標準 資料庫接口類 Statement、PreparedStatement> CallableStatement 的同時,繼承公共參 數類StatementUti 1,公共參數類StatementUtil定義了實現SQL語句跟蹤需要使用的變 量和方法,包括JDBC標準資料庫接口類Statement所屬的Connection對象實例即數據 庫連接、Statement對象實例、Statement對象實例開始執行資料庫操作的時間等等,內部Statement實現類通過繼承公共參數類StatementUtil可以獲得實現SQL語句跟蹤所需的 變量和方法。
(三)JDBC標準資料庫接口類定義的方法的實現各JDBC接口實現類在實現JDBC標準資料庫接口時調用對應JDBC標準資料庫 接口類定義的方法,同時為了實現SQL語句的跟蹤進行了特定處理,最終還是通過JDBC 標準資料庫接口實現資料庫操作,只是額外增加了對SQL語句的緩存等相關處理,如 JDBC接口實現類PoolConnectionlmpl中的方法pr印areStatement 的執行流程為先 調用 conn. prepareStatement (sql),再將返回的 PreparedStatement 對象實例禾口自身 作為參數創建PoolPi^paredStatement對象實例,然後保存SQL語句,最後返回創建的 PoolPr印aredStatement對象實例。其他方法的實現與上述方法的實現相類似,具體不再贅 述。基於改進後的資料庫連接池,對本發明實施例提供的資料庫連接池的監控方法進 行詳細說明。本發明實施例首先提供了一種在資料庫連接池中創建資料庫連接的方法,實現流 程圖如圖3所示,包括如下步驟S301、初始化變量managed,變量managed用於緩存資料庫連接;S302、調用方法newPooledConnection以創建Connection對象實例即資料庫連 接 conn ;S303、將資料庫連接corm和資料庫連接池對象作為入參調用 PoolConnectionlmpl的構造函數,創建PoolConnectionlmpl對象實例即資料庫連接 pConn ;S304、將創建的資料庫連接pCorm添加到變量managed中緩存;S305、判斷創建的資料庫連接pCorm是否達到預先設定的最大連接數,如果是,則 流程結束,如果否,則返回步驟S302。本發明實施例提供了一種資料庫連接池的監控方法,如圖4所示,包括如下步驟S401、從資料庫連接池中獲取PoolConnectionlmpl對象實例即資料庫連接 pconn ;具體實施中,通過調用方法getConectionO獲取PoolConnectionlmpl對象實例 即資料庫連接pconn,方法getConectionO返回PoolConnectionlmpl對象實例,資料庫連 接corm是資料庫連接pcorm中的一個變量。S402、基於獲取到的資料庫連接pcorm創建用於執行SQL語句的JDBC接口實現類 的對象實例;具體實施中,所述用於執行SQL語句的JDBC接口實現類包括PoolStatement、 PoolPreparedStatement 禾口 PoolCallableStatement,相應的對象實例包括 PoolStatement 對象實例、PoolPreparedStatement 對象實例禾口 PoolCallableStatement 對象實例; 資料庫連接pcorm所創建的用於執行SQL語句的JDBC接口實現類的對象實例可以為 PoolStatement 對象實例、PoolPreparedStatement 對象實例、PoolCallableStatement 對 象實例其中之一或者任意組合;本發明實施例中,以創建PoolPi^paredStatement對象實例ppstat的實現流程為例進行說明,具體請參見圖5,創建PoolStatement對象實例和PoolCallableStatement 對象實例的實現流程與創建PoolPreparedStatement對象實例的實現流程相類似,不再贅 述。S403、根據用於執行SQL語句的JDBC接口實現類所繼承的公共參數類定義的實現 SQL語句跟蹤需要使用的變量和方法,保存資料庫連接pcorm所創建的所有對象實例及其 SQL語句跟蹤信息;舉例進行說明,假設S402中基於獲取到的資料庫連接pcorm創建的所述JDBC 接口實現類的對象實例為PoolPi^paredStatement對象實例ppstat,則在S402的具體 實H中,通過i周用 PoolPreparedStatement 對象實 歹ij ppstat 的方^去 setPreparedSql , 保存Pi^paredStatement對象實例執行的SQL語句;通過調用方法addStatement 將 PoolPreparedStatement 對象實例 ppstat 添力口至Ij statementSet 集合變量。S404、在使用獲取到的資料庫連接pcorm執行資料庫操作的過程中,監控到數據 庫連接池中出現異常情況時,獲取該資料庫連接所創建的所有對象實例;具體實施中,資料庫連接池監控任務監控到資料庫連接池中出現異常情況時,通 過調用方法getStatementSetO獲取statementSet集合變量,statementSet集合變量中 存儲該資料庫連接所創建的所有對象實例; S405、針對每一個對象實例,獲得該對象實例的SQL語句跟蹤信息;具體實施中,針對statementSet集合變量中的每一個對象實例,通過調用每一 個對象實例的方法getSQLStringO和getExecTimeO,獲得該對象實例的SQL語句跟蹤 信息,SQL語句跟蹤信息包括資料庫連接執行的SQL語句以及執行時間等信息,其中,方法 getSQLStringO 和 getExecTimeO 由公共參數類 StatementUtil 定義。至此,已經實現了對資料庫連接池的監控,具體實施中,該方法還包括如下步驟在釋放資料庫連接pcorm時,清空保存的該資料庫連接所創建的所有對象實例, 釋放資料庫連接pcorm是指將資料庫連接pcorm放回資料庫連接池中。進一步,為了便於用戶進行異常情況的問題定位,該方法還可包括如下步驟將獲得的各對象實例的SQL語句跟蹤信息列印在日誌文件中,供用戶進行異常情 況的問題定位。創建PoolPi^paredStatement對象實例的方法,如圖5所示,包括如下步驟S501、定義 JDBC 接口 實現類 PoolPi^paredStatement 的變量 ppstat,並賦值為 null ;S502、調用資料庫連接conn定義的方法pr印areStatement 以創建 PreparedStatement 對象實例 pstat ;S503、將資料庫連接pconn和Pi^paredStatement對象實例pstat作為入參調用 PoolPreparedStatement 的構造函數,創建 PoolPreparedStatement 對象實例 ppstat。基於同一技術構思,本發明實施例提供了一種資料庫連接池的監控裝置,如圖,包 括獲取單元601,用於從資料庫連接池中獲取資料庫連接;創建單元602,用於基於獲取到的資料庫連接創建用於執行SQL語句的JDBC接口 實現類的對象實例,並根據該JDBC接口實現類所繼承的公共參數類定義的實現SQL語句跟蹤需要使用的變量和方法,保存該資料庫連接所創建的所有對象實例及其SQL語句跟蹤信 息;監控單元603,用於在使用獲取到的資料庫連接執行資料庫操作的過程中,監控到 資料庫連接池中出現異常情況時,獲取該資料庫連接所創建的所有對象實例;獲得單元604,用於針對每一個對象實例,獲得該對象實例的SQL語句跟蹤信息。具體實施中,該資料庫連接池的監控裝置還可包括清空單元605,用於在釋放該資料庫連接時,清空保存的該資料庫連接所創建的所 有對象實例。具體實施中,為了方便用戶進行異常情況的問題定位,該資料庫連接池的監控裝 置還可包括列印單元606,用於將獲得的各對象實例的SQL語句跟蹤信息列印在日誌文件中, 供用戶進 行異常情況的問題定位。本發明實施例提供的資料庫連接池的監控方法及裝置,實時緩存每一個資料庫連 接執行資料庫操作的過程中相關的SQL語句跟蹤信息,在資料庫連接池出現異常情況時獲 得上述SQL語句跟蹤信息,從而實現對資料庫連接執行的SQL語句的跟蹤,為準確、快速地 實現資料庫連接執行資料庫操作的過程中異常情況的問題定位提供基礎,提高資料庫連接 池的穩固性。本領域的技術人員應明白,本發明的實施例可提供為方法、裝置、或電腦程式產 品。因此,本發明可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施 例的形式。而且,本發明可採用在一個或多個其中包含有計算機可用程序代碼的計算機可 用存儲介質(包括但不限於磁碟存儲器、CD-ROM、光學存儲器等)上實施的電腦程式產品 的形式。本發明是參照根據本發明實施例的方法、裝置和電腦程式產品的流程圖和/或 方框圖來描述的。應理解可由電腦程式指令實現流程圖和/或方框圖中的每一流程和/ 或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些電腦程式指 令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生 一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用於實現 在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。這些電腦程式指令也可存儲在能引導計算機或其他可編程數據處理設備以特 定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指 令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或 多個方框中指定的功能。這些電腦程式指令也可裝載到計算機或其他可編程數據處理設備上,使得在計 算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或 其他可編程設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方框圖 一個方框或多個方框中指定的功能的步驟。顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精 神和範圍。這樣,倘若本發明的這些修改和變型屬於本發明權利要求及其等同技術的範圍 之內,則本發明也意圖包含這些改動和變型在內。
權利要求
一種資料庫連接池的監控方法,其特徵在於,包括從資料庫連接池中獲取資料庫連接;基於獲取到的資料庫連接創建用於執行結構化查詢語言SQL語句的JAVA資料庫連接JDBC接口實現類的對象實例,並根據所述JDBC接口實現類所繼承的公共參數類定義的實現SQL語句跟蹤需要使用的變量和方法,保存所述資料庫連接所創建的所有對象實例及其SQL語句跟蹤信息;在使用獲取到的資料庫連接執行資料庫操作的過程中,監控到資料庫連接池中出現異常情況時,獲取所述資料庫連接所創建的所有對象實例;並針對每一個對象實例,獲得該對象實例的SQL語句跟蹤信息。
2.如權利要求1所述的方法,其特徵在於,還包括在釋放所述資料庫連接時,清空保存的該資料庫連接所創建的所有對象實例。
3.如權利要求1所述的方法,其特徵在於,所述對象實例的SQL語句跟蹤信息包括該對 象實例執行的SQL語句以及執行時間。
4.如權利要求1、2或3所述的方法,其特徵在於,還包括將獲得的各對象實例的SQL語句跟蹤信息列印在日誌文件中,供用戶進行異常情況的 問題定位。
5.如權利要求1、2或3所述的方法,其特徵在於,所述用於執行SQL語句的JDBC 接口實現類,具體包括實現JDBC標準資料庫接口類Statement的JDBC接口實現類 Pool Statement、實現JDBC標準資料庫接口類Pi^paredStatement的JDBC接口實現類 PoolPr印aredStatement、以及實現 JDBC 標準資料庫接口類 CallableStatement 的 JDBC 接 口 實現類 PoolCalIableStatement0
6.如權利要求5所述的方法,其特徵在於,創建PoolPr印aredStatement對象實例的方 法,具體包括創建Pr印aredStatement對象實例;將獲取到的資料庫連接和Pr印aredStatement對象實例作為入參調用 PoolPr印aredStatement 的構造函數,創建 PoolPr印aredStatement 對象實例。
7.如權利要求1、2或3所述的方法,其特徵在於,所述資料庫連接為 PoolConnectionlmpl對象實例,所述PoolConnectionImp 1為實現JDBC標準資料庫接口類 Connection的JDBC接口實現類,以及在資料庫連接池中創建資料庫連接的方法,具體包 括初始化資料庫連接池中用於緩存資料庫連接的變量;創建Connection對象實例,將Connection對象實例和資料庫連接池對象作為入參調 用PoolConnectionlmpl的構造函數,創建資料庫連接,並將創建的資料庫連接添加到所述變量中緩存;當創建的資料庫連接的數量達到預先設定的最大連接數時,停止資料庫連接的創建。
8.一種資料庫連接池的監控裝置,其特徵在於,包括獲取單元,用於從資料庫連接池中獲取資料庫連接;創建單元,用於基於獲取到的資料庫連接創建用於執行結構化查詢語言SQL語句的 JAVA資料庫連接JDBC接口實現類的對象實例,並根據所述JDBC接口實現類所繼承的公共參數類定義的實現SQL語句跟蹤需要使用的變量和方法,保存所述資料庫連接所創建的所 有對象實例及其SQL語句跟蹤信息;監控單元,用於在使用獲取到的資料庫連接執行資料庫操作的過程中,監控到資料庫 連接池中出現異常情況時,獲取所述資料庫連接所創建的所有對象實例;獲得單元,用於針對每一個對象實例,獲得該對象實例的SQL語句跟蹤信息。
9.如權利要求8所述的裝置,其特徵在於,還包括清空單元,用於在釋放所述資料庫連接時,清空保存的所述資料庫連接所創建的所有 對象實例。
10.如權利要求8或9所述的裝置,其特徵在於,還包括列印單元,用於將獲得的各對象實例的SQL語句跟蹤信息列印在日誌文件中,供用戶 進行異常情況的問題定位。
全文摘要
本發明公開了一種資料庫連接池的監控方法及裝置,用以實現對資料庫連接執行的SQL語句的跟蹤,從而為準確、快速地實現資料庫連接池中異常情況的問題定位提供基礎。所述監控方法,包括從資料庫連接池中獲取資料庫連接;基於該資料庫連接創建用於執行SQL語句的JDBC接口實現類的對象實例,並根據JDBC接口實現類所繼承的公共參數類定義的實現SQL語句跟蹤需要使用的變量和方法,保存該資料庫連接所創建的所有對象實例及其SQL語句跟蹤信息;在使用該資料庫連接執行資料庫操作的過程中,監控到資料庫連接池中出現異常情況時,獲取該資料庫連接所創建的所有對象實例;並針對每一個對象實例,獲得該對象實例的SQL語句跟蹤信息。
文檔編號G06F17/30GK101840352SQ20101016067
公開日2010年9月22日 申請日期2010年4月29日 優先權日2010年4月29日
發明者王萍 申請人:中興通訊股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀