成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談JSP數(shù)據(jù)庫連接池的必要性

開發(fā) 后端
最近我作了JSP數(shù)據(jù)庫的頻繁連接,在此給出數(shù)據(jù)庫連接池的必要性,對于JSP來說一個很好的J2EE服務(wù)器是很必要的,JBOOS,WebLogic都是很好的解決方案。

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

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

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

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

使用這種模式開發(fā),存在很多問題。首先,我們要為每一次WEB請求(例如察看某一篇文章的內(nèi)容)建立一次JSP數(shù)據(jù)庫連接,對于一次或幾次操作來講,或許你覺察不到系統(tǒng)的開銷,但是,對于WEB程序來講,即使在某一較短的時間段內(nèi),其操作請求數(shù)也遠遠不是一兩次,而是數(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)定,進而會導(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的基本屬性:

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

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

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

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

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

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

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

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

***我們的整個JSP數(shù)據(jù)庫連接池系統(tǒng)總的架構(gòu)如下:

通過上面的介紹,我們可以看出,連接池技術(shù)的關(guān)鍵就是其自身的管理機制,以上的管理流程只是本人一點見解,關(guān)鍵是想向大家介紹一種思路,在此基礎(chǔ)上,您可以進一步完善連接池技術(shù)為您所用。

【編輯推薦】

  1. 介紹幾個開源的JSP開發(fā)框架
  2. JSP開發(fā)框架FastJSP簡介
  3. JSP開發(fā)框架JSF對比基于Servlet的Tapestry
  4. 學(xué)習(xí)JSP的基礎(chǔ)概念之九個隱含對象
  5. JSP數(shù)據(jù)分頁實例:MySQL翻頁
責(zé)任編輯:彭凡 來源: javaeye
相關(guān)推薦

2009-07-07 16:27:17

JSP數(shù)據(jù)庫連接池

2009-06-24 07:53:47

Hibernate數(shù)據(jù)

2021-07-07 14:20:15

高并發(fā)服務(wù)數(shù)據(jù)庫

2010-03-18 15:09:15

python數(shù)據(jù)庫連接

2019-11-27 10:31:51

數(shù)據(jù)庫連接池內(nèi)存

2011-06-14 10:20:20

URL標(biāo)準(zhǔn)化

2017-06-22 14:13:07

PythonMySQLpymysqlpool

2009-07-03 13:10:06

SQL Server2tomcatJSP

2009-07-07 14:56:33

JSP連接MySQL

2018-10-10 14:27:34

數(shù)據(jù)庫連接池MySQL

2023-05-31 10:02:29

人工智能

2009-06-16 09:25:31

JBoss配置

2011-05-19 09:53:33

數(shù)據(jù)庫連接池

2018-01-03 14:32:32

2009-07-17 13:32:49

JDBC數(shù)據(jù)庫

2009-12-11 09:36:02

PHP數(shù)據(jù)緩存類

2014-02-17 09:37:31

亞馬遜WorkSpacesVDI

2021-08-12 06:52:01

.NET數(shù)據(jù)庫連接池

2020-04-30 14:38:51

數(shù)據(jù)庫連接池線程

2009-01-15 09:02:27

JMXJBossJMX監(jiān)控
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日本在线看 | 日本韩国欧美在线观看 | 午夜久久久 | 偷拍自拍网址 | 欧美性生活网 | 人人做人人澡人人爽欧美 | 国产乱肥老妇国产一区二 | 狠狠入ady亚洲精品经典电影 | 精精国产xxxx视频在线播放 | 涩涩视频在线观看 | 亚洲一区二区精品视频 | 国产一区在线免费观看 | 免费在线观看黄色av | 偷拍自拍第一页 | 国产精品久久久久久久久久久免费看 | 久草久草久草 | 国产精品色 | 国产一级一级毛片 | 91精品国产91久久久久游泳池 | 九色在线视频 | 久久国内精品 | 成人免费视频网站在线观看 | 天堂一区二区三区四区 | 欧美性猛交一区二区三区精品 | 国产激情精品一区二区三区 | 91视频在线观看免费 | 国产精品亚洲精品日韩已方 | 一区二区三区中文字幕 | 在线免费观看a级片 | 国产大片黄色 | 中文字幕日韩在线观看 | 日韩欧美在线观看视频 | 亚洲视频中文字幕 | 日韩免费1区二区电影 | 久久一日本道色综合久久 | 91一区二区三区在线观看 | 亚洲性视频 | 国产精品国产 | 麻豆a级片 | 国产激情在线播放 | 一级看片免费视频囗交动图 |