⑴ JSP調用DBCP連接池的問題
1. 第一個問題是肯定的
2. 第二個問題也是肯定的,因為每次都重新運行jsp,重新new了連接池
3. 解決方案是你的連接池應該有一個全局對象存放,不管執行多少次jsp,這個對象通過單例引用即可
⑵ dbcp怎麼監控程序使用資料庫連接池
1.創建DbcpTest.java單元測試類
2.拷入所需jar包commons-dbcp-1.4.jar commons-pool-1.5.5.jar
3.創建如下代碼,注意我們創建的是BasicDataSource 對象
4.測試結果
5.DBCP連接池還有一些屬性可以設置,常用的如下:
6.以上算是一個DBCP的基本結構,
而常用的創建數據連接池是通過他的連接工廠類BasicDataSourceFactory 的createDataSource() 方法,它需要讀取一個配置文件
7.新建dbcp.properties文件
8.添加如下代碼,注意:配置文件中的鍵需要來自BasicDataSource的屬性
9.測試結果如下:
10.總結步驟:
步驟閱讀
⑶ 你好!如果用dbcp去連接,那我close的時候還是自己寫嗎,還是說有dbcp自帶的什麼方法。下面是我寫的釋放
不需要自己寫,連接池根據連接情況自行關閉
⑷ dbcp2 怎麼連接mysql並創建表
DBCP(DataBase connection pool),資料庫連接池。是 apache 上的一個 java 連接池項目,也是 tomcat 使用的連接池組件。單獨使用dbcp需要3個包:commons-dbcp.jar,commons-pool.jar,commons-collections.jar。
由於建立資料庫連接是一個非常耗時耗資源的行為,所以通過連接池預先同資料庫建立一些連接,放在內存中,應用程序需要建立資料庫連接時直接到連接池中申請一個就行,用完後再放回去。
⑸ dbcp連接池放回鏈接後再次拿出來地址為什麼不一樣,我只初始化一個。怎麼列印判斷兩鏈接是同一個鏈接
1. 引入dbcp (選擇1.4)
Java代碼
<application-policyname="EncryptDBPassword">
<authentication>
<login-molecode="org.jboss.resource.security.SecureIdentityLoginMole"flag="required">
<mole-optionname="username">${username}</mole-option>
<mole-optionname="password">${password_encrypt}</mole-option>
<mole-optionname="managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=${jndiName}</mole-option>
</login-mole>
</authentication>
</application-policy>
為了能達到同樣的效果,切換為spring dbcp配置時,也有類似密碼加密的功能,運行期進行密碼decode,最後進行數據鏈接。
實現方式很簡單,分析jboss的對應SecureIdentityLoginMole的實現,無非就是走了Blowfish加密演算法,自己拷貝實現一份。
⑹ 如何使用dbcp連接mysql
1、把資料庫驅動包 到 %CATALINA_HOME%\common\lib 下。 2、修改 %CATALINA_HOME%\conf\server.xml 文件,在 節點下添加: XML/HTML code?
⑺ Spring配置DBCP資料庫連接池
<!-- 數據源配置,使用應用內的DBCP資料庫連接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!-- Connection Info -->
<property name="driverClassName" value="${datasource.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- Connection Pooling Info -->
<property name="initialSize" value="5" />
<property name="maxActive" value="100" />
<property name="maxIdle" value="30" />
<property name="maxWait" value="1000" />
<property name="poolPreparedStatements" value="true" />
<property name="defaultAutoCommit" value="false" />
</bean>
⑻ dbcp連接池配置詳解
首先,明確連接、活動連接(連接正被使用)、空閑連接的概念
一、創建連接
1、初始化 2、空閑連接低於最小空閑minIdle
二、銷毀連接
1、空閑連接數目高於最大空閑 2、活動連接被遺棄
三、回收行為
1、空閑連接回收器(定時執行)2、連接回收器(maxwait後觸發)
initialSize 初始化連接數,即連接池啟動時池子中的連接數目
maxActive 最大活動連接數,即連接池中可同時連接的最大數目
minIdle 最小空閑連接,連接池中最少的空閑的連接數,
低於這個數量時,意味著連接不夠用了,會被創建新的連接
默認為0,該參數越接近maxIdle,性能越好,因為連接的創建和銷毀,都是需要消耗資源的;
不宜太大,因為在機器很空閑的時候,也會創建低於minidle個數的連接,類似於jvm參數中的Xmn設置。
maxIdle 最大空閑連接
超過此參數時空閑連接將被釋放,如果設置為負數表示不限制
默認為8個,maxIdle不能設置太小,因為假如在高負載的情況下,連接的打開時間比關閉的時間快,會引起連接池中idle的個數上升超過maxIdle,而造成頻繁的連接銷毀和創建,類似於jvm參數中的Xmx設置。
maxIdle 最大空閑連接
超過此參數時空閑連接將被釋放,如果設置為負數表示不限制
默認為8個,maxIdle不能設置太小,因為假如在高負載的情況下,連接的打開時間比關閉的時間快,會引起連接池中idle的個數上升超過maxIdle,而造成頻繁的連接銷毀和創建,類似於jvm參數中的Xmx設置
maxWait 請求連接時,最長的等待時間。
單位ms,當沒有可用連接時,連接池會等待連接釋放,超過該時間限制會拋出異常,如果設置-1表示無限等待(默認為無限)。
⑼ 如何連接不同的數據源
現在常用的開源資料庫連接池主要有c3p0、dbcp、proxool三種,其中:
Spring 推薦使用dbcp;
Hibernate 推薦使用c3p0和proxool;
1、 DBCP:Apache
DBCP(DataBase connection pool)資料庫連接池。是Apache上的一個 java連接池項目,也是 tomcat使用的連接池組件。單獨使用dbcp需要3個包:common-dbcp.jar,common-pool.jar,common-collections.jar由於建立資料庫連接是一個非常耗時耗資源的行為,所以通過連接池預先同資料庫建立一些連接,放在內存中,應用程序需要建立資料庫連接時直接到連接池中申請一個就行,用完後再放回去。dbcp沒有自動的去回收空閑連接的功能。
2、 C3P0:
C3P0是一個開源的JDBC連接池,它實現了數據源和JNDI綁定,支持JDBC3規范和JDBC2的標准擴展。c3p0是非同步操作的,緩慢的JDBC操作通過幫助進程完成。擴展這些操作可以有效的提升性能。目前使用它的開源項目有Hibernate,Spring等。c3p0有自動回收空閑連接功能。
3、 Proxool:Sourceforge
Proxool是一種Java資料庫連接池技術。是sourceforge下的一個開源項目,這個項目提供一個健壯、易用的連接池,最為關鍵的是這個連接池提供監控的功能,方便易用,便於發現連接泄漏的情況。
對比:
1> 相同時間內同等量的線程數和循環次數下:通過對三個連接池的三個標志性性能測試參數(Average,median,90%Line)進行比較發現:性能dbcp<=c3p0<proxool;
2> 不同情況下的同一資料庫連接池測試:通過觀察 Average,median,90%Line三個參數發
現三個連接池的穩定性(三種連接池的三個測試參數的變化情況)依次:穩定性dbcp>=c3p0>proxool。
結論:
通過對三種資料庫連接池的性能測試發現,proxool和 c3p0能夠更好的支持高並發,但是在穩定性方面略遜於 dpcp;