99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

JSP數(shù)據(jù)庫連接池的示例分析

這篇文章主要介紹了JSP數(shù)據(jù)庫連接池的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)公司主營同德網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā),同德h5小程序開發(fā)搭建,同德網(wǎng)站營銷推廣歡迎同德等地區(qū)企業(yè)咨詢

一般情況下,在使用開發(fā)基于數(shù)據(jù)庫的WEB程序時,傳統(tǒng)的模式基本是按以下步驟:

1. 在主程序(如Servlet、Beans)中建立數(shù)據(jù)庫連接。

2. 進(jìn)行SQL操作,取出數(shù)據(jù)。

3. 斷開數(shù)據(jù)庫連接。

使用這種模式開發(fā),存在很多問題。首先,我們要為每一次WEB請求(例如察看某一篇文章的內(nèi)容)建立一次JSP數(shù)據(jù)庫連接,對于一次或幾次操作來講,或許你覺察不到系統(tǒng)的開銷,但是,對于WEB程序來講,即使在某一較短的時間段內(nèi),其操作請求數(shù)也遠(yuǎn)遠(yuǎn)不是一兩次,而是數(shù)十上百次(想想全世界的網(wǎng)友都有可能在您的網(wǎng)頁上查找資料),在這種情況下,系統(tǒng)開銷是相當(dāng)大的。事實上,在一個基于數(shù)據(jù)庫的WEB系統(tǒng)中,建立數(shù)據(jù)庫連接的操作將是系統(tǒng)中代價***的操作之一。很多時候,可能您的網(wǎng)站速度瓶頸就在于此。

其次,使用傳統(tǒng)的模式,你必須去管理每一個連接,確保他們能被正確關(guān)閉,如果出現(xiàn)程序異常而導(dǎo)致某些連接未能關(guān)閉,將導(dǎo)致數(shù)據(jù)庫系統(tǒng)中的內(nèi)存泄露,最終我們將不得不重啟數(shù)據(jù)庫。

針對以上問題,我們首先想到可以采用一個全局的Connection對象,創(chuàng)建后就不關(guān)閉,以后程序一直使用它,這樣就不存在每次創(chuàng)建、關(guān)閉連接的問題了。但是,同一個連接使用次數(shù)過多,將會導(dǎo)致連接的不穩(wěn)定,進(jìn)而會導(dǎo)致WEB SERVER的頻頻重啟。故而,這種方法也不可取。實際上,我們可以使用連接池技術(shù)來解決上述問題。首先,介紹一下連接池技術(shù)的基本原理。顧名思義,連接池最基本的思想就是預(yù)先建立一些連接放置于內(nèi)存對象中以備使用:

當(dāng)程序中需要建立數(shù)據(jù)庫連接時,只須從內(nèi)存中取一個來用而不用新建。同樣,使用完畢后,只需放回內(nèi)存即可。而連接的建立、斷開都有連接池自身來管理。同時,我們還可以通過設(shè)置連接池的參數(shù)來控制連接池中的連接數(shù)、每個連接的***使用次數(shù)等等。通過使用連接池,將大大提高程序效率,同時,我們可以通過其自身的管理機制來監(jiān)視數(shù)據(jù)庫連接的數(shù)量、使用情況等。

下面我們以一個名為ConnectionPool的連接池為例來看看連接池的實現(xiàn)。先看看ConnectionPool的基本屬性:

m_ConnectionPoolSize:連接池中連接數(shù)量下限  m_ConnectionPoolMax:連接池中連接數(shù)量上限   m_ConnectionUseCount:一個連接的***使用次數(shù)  m_ConnectionTimeout:一個連接的最長空閑時間  m_MaxConnections = -1:同一時間的***連接數(shù)  m_timer:定時器

這些屬性定義了連接池與其中的每個連接的有效狀態(tài)值。連接池的自我管理,實際上就是通過定時的對每個連接的狀態(tài)、連接的數(shù)量進(jìn)行判斷而進(jìn)行相應(yīng)操作。其管理流程如下:

我們可以定義出ConnectionPool要完成管理所需要的基本接口:

public class ConnectionPool implements TimerListener{  public boolean initialize() //連接池初始化   public void destroy() //連接池的銷毀   public synchronized java.sql.Connection getConnection() //取一個連接   public synchronized void close() //關(guān)閉一個連接   private synchronized void removeFromPool() //把一個連接從連接池中刪除   private synchronized void fillPool() //維護(hù)連接池大小   public synchronized void TimerEvent() //定時器事件處理函數(shù)   }

通過這幾個接口,已經(jīng)可以完成連接池的基本管理。在TimeEvent()函數(shù)中完成JSP數(shù)據(jù)庫連接池的狀態(tài)檢驗工作,fillPool()時連接池至少保持最小連接數(shù)。因為我們要保存每一個連接的狀態(tài),所以還需要一個數(shù)據(jù)庫連接對象:

class ConnectionObject{  public java.sql.Connection con; public boolean inUse; //是否被使用標(biāo)志   public long lastAccess; //最近一次開始使用時間   public int useCount; //被使用次數(shù)  }

加入了ConnectionObject對象后,在ConnectionPool中操作的應(yīng)該只是ConnectionObject,而其他進(jìn)程需要的只是

ConnectionObject的con屬性,因此我們再加入一個類,作為其他進(jìn)程獲得與返回連接的接口: CLASS Conn{  GetConnection(); //從連接池中取出一個有效連接   CloseConnection(); //返回連接,此時并沒有關(guān)閉連接,只是放回了連接池   DestroyPool(); //銷毀連接池   }

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“JSP數(shù)據(jù)庫連接池的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

本文名稱:JSP數(shù)據(jù)庫連接池的示例分析
網(wǎng)站地址:http://www.yijiale78.com/article8/joogip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)做網(wǎng)站電子商務(wù)品牌網(wǎng)站設(shè)計響應(yīng)式網(wǎng)站定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營