《數(shù)據(jù)庫連接池》PPT課件.ppt
《《數(shù)據(jù)庫連接池》PPT課件.ppt》由會員分享,可在線閱讀,更多相關《《數(shù)據(jù)庫連接池》PPT課件.ppt(36頁珍藏版)》請在裝配圖網(wǎng)上搜索。
,,,三,數(shù)據(jù)庫連接池,第,講,本章目標,數(shù)據(jù)連接池原理DBCP、C3P0,JNDI連接池配置使用,一、回顧數(shù)據(jù)庫直接連接,JDBC可做三件事:與數(shù)據(jù)庫建立連接、執(zhí)行SQL語句、處理結(jié)果,Connection,DriverManager,Statement,ResultSet,,DriverManager:依據(jù)數(shù)據(jù)庫的不同,管理JDBC驅(qū)動Connection:負責連接數(shù)據(jù)庫并擔任傳送數(shù)據(jù)的任務Statement:由Connection產(chǎn)生、負責執(zhí)行SQL語句ResultSet:負責保存Statement執(zhí)行后所產(chǎn)生的查詢結(jié)果,客戶端,數(shù)據(jù)庫服務器,1,2,3,4,使用數(shù)據(jù)直接連接的缺點,在某一時刻連接必須服務于一個用戶,以免造成事務沖突來自不同用戶的請求(都使用了同一個連接)對相同的事務進行操作,如果一個請求試圖回滾,那么所有使用相同連接的數(shù)據(jù)庫操作都要被回滾。創(chuàng)建連接需要耗費時間創(chuàng)建一個連接大概需要1-2秒的時間。保持連接打開狀態(tài)的代價很大尤其是在系統(tǒng)資源(例如內(nèi)存)方面。數(shù)據(jù)庫產(chǎn)品的許可證都按照同時打開的連接數(shù)目來收費。,二、數(shù)據(jù)庫連接池原理,什么是數(shù)據(jù)庫連接池數(shù)據(jù)庫連接池:Connectionpooling,它是程序啟動時建立足夠的數(shù)據(jù)庫連接,并將這些連接組成一個連接池,由程序動態(tài)地對池中的連接進行申請,使用,釋放。,二、數(shù)據(jù)庫連接池原理,數(shù)據(jù)庫連接池運行機制從連接池獲取或創(chuàng)建可用連接;使用完畢之后,把連接返還給連接池;在系統(tǒng)關閉前,斷開所有連接并釋放連接占用的系統(tǒng)資源;還能夠處理無效連接(原來登記為可用的連接,由于某種原因不再可用,如超時,通訊問題),并能夠限制連接池中的連接總數(shù)不低于某個預定值和不超過某個預定值;,二、數(shù)據(jù)庫連接池原理,連接池示例圖:,二、數(shù)據(jù)庫連接池原理,使用數(shù)據(jù)庫連接池技術的好處1.資源重用由于數(shù)據(jù)庫連接得到重用,避免了頻繁創(chuàng)建、釋放連接引起的大量性能開銷。在減少系統(tǒng)消耗的基礎上,另一方面也增進了系統(tǒng)運行環(huán)境的平穩(wěn)性(減少內(nèi)存碎片以及數(shù)據(jù)庫臨時進程/線程的數(shù)量)。2.更快的系統(tǒng)響應速度數(shù)據(jù)庫連接池在初始化過程中,往往已經(jīng)創(chuàng)建了若干數(shù)據(jù)庫連接置于池中備用。此時連接的初始化工作均已完成。對于業(yè)務請求處理而言,直接利用現(xiàn)有可用連接,避免了數(shù)據(jù)庫連接初始化和釋放過程的時間開銷,從而縮減了系統(tǒng)整體響應時間。3.統(tǒng)一的連接管理,避免數(shù)據(jù)庫連接泄漏在較為完備的數(shù)據(jù)庫連接池實現(xiàn)中,可根據(jù)預先的連接占用超時設定,強制收回被占用連接。從而避免了常規(guī)數(shù)據(jù)庫連接操作中可能出現(xiàn)的資源泄漏。,二、數(shù)據(jù)庫連接池原理,常用的數(shù)據(jù)庫連接池基于JNDI、C3P0、DBCP技術的數(shù)據(jù)連接池(1)JNDI(JavaNamingandDirectoryInterface):是SUN公司提供的一種標準的Java命名系統(tǒng)接口,是一組在Java應用中訪問命名和目錄服務的API。命名服務是將名稱和對象聯(lián)系起來,使得我們可以用名稱訪問對象。目錄服務是一種命名服務,它提供了應用編程接口(applicationprogramminginterface,API)和服務提供者接口(serviceproviderinterface,SPI)。這一點的真正含義是,要讓應用與命名服務或目錄服務交互,必須有這個服務的JNDI服務提供者,這正是JNDISPI發(fā)揮作用的地方。服務提供者基本上是一組類,這些類為各種具體的命名和目錄服務實現(xiàn)了JNDI接口—很象JDBC驅(qū)動為各種具體的數(shù)據(jù)庫系統(tǒng)實現(xiàn)了JDBC接口一樣。作為一個應用開發(fā)者,不必操心JNDISPI。只需要確認要使用的每一個命名或目錄服務都有服務提供者。(2)C3P0:連接池作者是《星球大戰(zhàn)》迷,C3P0就是其中的一個機器人,并且這個名稱中包涵connection和pool的單詞字母。因此叫這個名字。(3)DBCP(DataBaseconnectionpool):是apache上的一個java連接池項目,也是tomcat使用的連接池組件。單獨使用dbcp需要3個包:common-dbcp.jar,common-pool.jar,common-collections.jar,三、連接池的使用,DBCP主要配置屬性:下面對里面幾個比較重要的參數(shù)進行一下說明:name:表示你的連接池的名稱也就是你要訪問連接池的地址type:是對象的類型driverClassName:是數(shù)據(jù)庫驅(qū)動的名稱url:是數(shù)據(jù)庫的地址username:是登陸數(shù)據(jù)庫的用戶名password:是登陸數(shù)據(jù)庫的密碼factory:默認的使用tomcat.dbcp.BasicDataSourceFactory,可以使用factory="mons.dbcp.BasicDataSourceFactory",就是Apache的開源的數(shù)據(jù)庫連接池,但一定要把commons-dbcp-1.4.jar放到項目的lib里。,3.1DBCP使用,maxIdle,是最大的空閑連接數(shù),這里取值為2,表示即使沒有數(shù)據(jù)庫連接時依然可以保持2空閑的連接,而不被清除,隨時處于待命狀態(tài)。maxWait,最大建立連接等待時間。如果超過此時間將接到異常。設為-1表示無限制。maxActive是最大激活連接數(shù),這里取值為20,表示同時最多有20個數(shù)據(jù)庫連接。,三、連接池的使用,DBCP應用(1)新建一個web工程(2)把數(shù)據(jù)庫包導入到lib如mysql-connector-java-5.0.8-bin(3)把common-dbcp.jar,common-pool.jar,common-collections.jar導入到lib(4)在WebRoot\META-INF建立文件context.xml內(nèi)容如下:,三、連接池的使用,(5)在jsp中使用數(shù)據(jù)庫連接池導入類包java.sql.*,mons.dbcp.*java.sql.SQLException.*javax.naming.Context.*javax.naming.InitialContextjavax.sql.DataSourcejavax.naming.NamingException,三、連接池的使用,(6)編寫代碼");out.print(dbs.getNumActive());}catch(NamingExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}%>,三、連接池的使用,3.2C3P0使用,C3PO連接池是一個優(yōu)秀的連接池,推薦使用。C3PO實現(xiàn)了JDBC3.0規(guī)范的部分功能,因而性能更加突出。C3PO主要配置屬性,acquireIncrement:當連接池中的連接耗盡的時候c3p0一次同時獲取的連接數(shù)acquireRetryAttempts:定義在從數(shù)據(jù)庫獲取新連接失敗后重復嘗試的次數(shù)acquireRetryDelay:兩次連接中間隔時間,單位毫秒。Default:1000autoCommitOnClose:連接關閉時默認將所有未提交的操作回滾。Default:falseDescription:描述minPoolSize:連接池中最小連接數(shù)maxPoolSize:連接池中最大連接數(shù)Name:連接池的名字User:用戶名Password:密碼auth表示認證方式,一般為Container,3.2C3P0使用,factory:工廠類的位置,生成數(shù)據(jù)源Type:連接池的類型jdbcUrl:數(shù)據(jù)庫地址,3.2C3P0使用,C3P0應用(1)導入包到libc3p0-0.9.1.2.jar、mysql-connector-java-5.0.8-bin.jar(2)配置文件\Tomcat5.5\conf\server.xml在tomcat\conf\server.xml的GlobalNamingResources中增加:,3.2C3P0使用,(3)配置文件WebRoot\META-INF\context.xml(4)配置文件\WebRoot\WEB-INF\web.xmlDBConnectionjdbc/mysqlDBjavax.sql.DataSourceContainer,3.2C3P0使用,(5)編碼java.sql.*javax.naming.*javax.sql.*com.mchange.v2.c3p0.*,3.2C3P0使用,3.2C3P0使用,在JSP文件中中添加代碼字段1:字段2:,C3P0的另一使用方法,創(chuàng)建DB包,創(chuàng)建DBUtil類。創(chuàng)建靜態(tài)方法getConn(),靜態(tài)方法close()。用于連接關閉數(shù)據(jù)源。,示例代碼,publicclassDBCPTest{privatestaticBasicDataSourcebds=null;privatestaticConnectionFactorycf=null;static{bds=newBasicDataSource();bds.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");bds.setUrl("jdbc:sqlserver://127.0.0.1:1433;databaseName=AjaxDb");bds.setInitialSize(10);bds.setMaxActive(4);bds.setMaxWait(5000);bds.setUsername("sa");bds.setPassword("Zzx198461");cf=newDataSourceConnectionFactory(bds);}publicstaticConnectiongetConnection()throwsSQLException{returncf.createConnection();}publicstaticvoiddestroy()throwsSQLException{cf=null;bds.close();bds=null;}publicstaticvoidmain(String[]args)throwsException{System.out.println(DBCPTest.getConnection());}},3.3配置TomcatJNDI數(shù)據(jù)庫連接池1,第一步:加載數(shù)據(jù)驅(qū)動包。Tomcate5.5將數(shù)據(jù)庫驅(qū)動包拷貝到tomcathome/common/lib目錄下。Tomcate6.0將數(shù)據(jù)庫驅(qū)動包拷貝到tomcathome/lib目錄下。,配置TomcatJNDI數(shù)據(jù)庫連接池2,第二步:配置tomcat連接池文件。A>在web工程中的META-INF創(chuàng)建context.xml文件在文件中寫入內(nèi)容:,,配置TomcatJNDI數(shù)據(jù)庫連接池3,第三步:在web.xml配置如下:,connpooljavax.sql.DataSourceContainer,配置TomcatJNDI數(shù)據(jù)庫連接池4,第四步:修改DBUtil類。,publicclassDBUtil{privateDBUtil(){}publicstaticConnectiongetConn()throwsException{ContextinitCtx=newInitialContext();ContextenvCtx=(Context)initCtx.lookup("java:comp/env");DataSourceds=(DataSource)envCtx.lookup("connpool");returnds.getConnection();}},JNDI與tomcat連接池,私有數(shù)據(jù)庫連接池(Host節(jié)點里面),JNDI與tomcat連接池,公有數(shù)據(jù)庫連接池,JNDI與tomcat連接池,引用公有數(shù)據(jù)庫連接池(Host節(jié)點里面),JNDI與tomcat連接池,項目工程目錄WEB-INf\web.xml中配置,JNDI與tomcat連接池,JSP測試文件,JNDI與tomcat連接池,配置數(shù)據(jù)源的簡單方法1)tomcat6.0后提供了context.xml,無需設置虛擬目錄和配置web.xml。將配置好的context.xml放到工程的META-INF\目錄下。context.xml,JNDI與tomcat連接池,(2)在程序中,通過tomcat服務器調(diào)用,總結(jié),數(shù)據(jù)庫連接池,可以緩存連接對象傳統(tǒng)的連接對象,在使用完后沒有很好的回收dbcp連接池,在多用戶訪問時,連接速度比較快連接池可以,有效的管理數(shù)據(jù)庫連接對象在tomcat上配置的連接池,一定要經(jīng)過tomcat的容器調(diào)用,- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 數(shù)據(jù)庫連接池 數(shù)據(jù)庫連接 PPT 課件
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
相關資源
更多
正為您匹配相似的精品文檔
鏈接地址:http://www.hcyjhs8.com/p-13197536.html