㈠ 幾個主流的java連接池有哪些
現在常用的開源資料庫連接池主要有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;
㈡ Tomcat中創建連接池怎麼用
1.將資料庫驅動程序的JAR文件放在Tomcat的 common/lib 中;
2.在server.xml中設置數據源,以MySQL資料庫為例,如下:
在<GlobalNamingResources> </GlobalNamingResources>節點中加入,
<Resource
name="jdbc/DBPool"
type="javax.sql.DataSource"
password="root"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://127.0.0.1:3306/test"
maxActive="4"/>
屬性說明:name,數據源名稱,通常取」jdbc/XXX」的格式;
type,」javax.sql.DataSource」;
password,資料庫用戶密碼;
driveClassName,資料庫驅動;
maxIdle,最大空閑數,資料庫連接的最大空閑時間。超過空閑時間,資料庫連
接將被標記為不可用,然後被釋放。設為0表示無限制。
MaxActive,連接池的最大資料庫連接數。設為0表示無限制。
maxWait ,最大建立連接等待時間。如果超過此時間將接到異常。設為-1表示
無限制。
3.在你的web應用程序的web.xml中設置數據源參考,如下:
在<web-app></web-app>節點中加入,
<resource-ref>
<description>MySQL DB Connection Pool</description>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
子節點說明: description,描述信息;
res-ref-name,參考數據源名字,同上一步的屬性name;
res-type,資源類型,」javax.sql.DataSource」;
res-auth,」Container」;
res-sharing-scope,」Shareable」;
4.在web應用程序的context.xml中設置數據源鏈接,如下:
在<Context></Context>節點中加入,
<ResourceLink
name="jdbc/DBPool"
type="javax.sql.DataSource"
global="jdbc/DBPool"/>
屬性說明:name,同第2步和第3步的屬性name值,和子節點res-ref-name值;
type,同樣取」javax.sql.DataSource」;
global,同name值。
至此,設置完成,下面是如何使用資料庫連接池。
1.建立一個連接池類,DBPool.java,用來創建連接池,代碼如下:
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBPool {
private static DataSource pool;
static {
Context env = null;
try {
env = (Context) new InitialContext().lookup("java:comp/env");
pool = (DataSource)env.lookup("jdbc/DBPool");
if(pool==null)
System.err.println("'DBPool' is an unknown DataSource");
} catch(NamingException ne) {
ne.printStackTrace();
}
}
public static DataSource getPool() {
return pool;
}
}
2.在要用到資料庫操作的類或jsp頁面中,用DBPool.getPool().getConnection(),獲得一個Connection對象,就可以進行資料庫操作,最後別忘了對Connection對象調用close()方法,注意:這里不會關閉這個Connection,而是將這個Connection放回資料庫連接池。
㈢ tomcat資料庫連接池出現異常
第一步,把驅動有放在了tomcat/common/lib下面,第二步修改tomcat/conf/context.xml。 代碼如下
<Resource name="jdbc/bank" auth="Container"
type="javax.sql.DataSource" maxActive="100"
maxIdle="30" maxWait="10000" username="sa"
password="sa"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=bank"
/>
然後帶連接類里 Context ic = new InitialContext();
DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/food");
conn = ds.getConnection();
獲得連接,然後就可以用了
㈣ 怎麼在tomcat配置資料庫連接池
方法/步驟
Tomcat大都是免安裝綠色版的,找到Tomcat的解壓路徑,然後找打一下文件:tomcat\conf\context.xml。
打開文件context.xml。
將右側滾動條拉到最下方,並添加如下圖紅色框內的代碼。
也可復制如下代碼:
<Resource driverClassName="oracle.jdbc.driver.OracleDriver"
maxActive="30" maxIdle="3" maxWait="5000" name="jdbc/test" username="test" password="test"
type="javax.sql.DataSource" url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
那上邊的代碼有什麼作用呢?下邊來給大家解釋比較常用的幾個參數。
driverClassName:驅動的名稱。
該參數為資料庫驅動類名稱,比如上邊使用的是oracle的驅動。當然也意為著只能連接Oracle的資料庫。如果想用MySQL的,那就寫下邊這個嘍。
MySQL的驅動為:com.mysql.jdbc.Driver
name/password:為資料庫的用戶名和密碼。
㈤ java中建立資料庫連接池,有哪幾個步驟
配置包括3步:1.讓tomcat容器啟動創建資料庫連接池2.在某個項目中關聯資料庫連接池,3.取得資料庫連接池並使用。使用包括,當拿到資料庫連接後,可以通過2種方式來使用,1.使用jstl的標簽,2.封裝成返回connection的方法。
1.讓tomcat容器啟動創建資料庫連接池:
配置的地方很多,根據不同的需求配置在不同的位置,但原理就一個,就是要配置一個Context標簽下有一個resource標簽。
a.在Tomcat 6.0\conf\Catalina\localhost目錄下新建一個跟項目名一樣的*.xml文件
b.數據源設置的名字(JNDI) auth:表示數據源由誰管理,這兒是tomcat容器本身 type:類型
c.驅動設置,該驅動放在tomcat的lib下或者放在該站點的lib下設置連接資料庫字元串,url設置連接資料庫的用戶名設置資料庫連接的密碼-->
2.在某個項目中關聯資料庫連接池,在web.xml添加代碼:
<!--關聯jndi資料庫連接池 -->
3.使用jstl標簽測試數據源是否配置成功
4.在jsp中通過java代碼測試:
5.封裝成bean對外提供得到資料庫連接池連接的方式:
㈥ TOMCAT怎麼配置連接池
Tomcat的連接池配置方式具體如下:
一.配置tomcat連接池
1. 修改server.xml或者在conf/Catalina/localhost下添加對應的xml片段。此處使用的是第二種方法。
在conf/Catalina/localhost文件夾下新建ROOT.xml片段,添加以下內容:
<?xmlversion="1.0"encoding="UTF-8"?>
<Context crossContext="true" useHttpOnly="true">
<Resourcename="jdbc/infogrid" type="javax.sql.DataSource" password="123456" driverClassName="com.mysql.jdbc.Driver" maxIdle="10" maxWait="50" username="root" url="jdbc:mysql://localhost:3306/infogrid?autoReconnect=true" maxActive="20"/>
</Context>
2. 為tomcat添加資料庫連接驅動包,本用例使用mysql,將mysql的驅動包添加到common/lib下
二.編寫java測試類(該類必須部署在tomcat容器中,否則無法獲得JNDI資源)
PreparedStatement ps=null;
ResultSet rs=null;
try{
InitialContext ctx=new InitialContext();
DataSource dataSource=(DataSource)ctx.lookup("java:comp/env/jdbc/infogrid");
Connection connection=dataSource.getConnection();
ps=connection.prepareStatement("select count(*) from test");
rs=ps.executeQuery();
rs.next();
System.out.println("表中行數為:"+rs.getInt(1));
rs.close();
ps.close();
System.out.println(connection.getClass());
//class org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper
Field field=connection.getClass().getDeclaredField("delegate");
field.setAccessible(true);
System.out.println(field.get(connection).getClass());
//class org.apache.tomcat.dbcp.dbcp.PoolableConnection
connection.close();
//此關閉並非為真得關閉資料庫連接,具體該close實現可見上面的兩個Connection代理類,其實只是告訴連接池,該Connection已經用完了,可以被再次利用了
}catch(Exception ex){
ex.printStackTrace();
}
㈦ java 在tomcat的context.xml里配置了連接池,要如何在代碼里使用它。
ApplicationContext.xml中配置
<!-- 通過JNDI 使用應用伺服器 的Connection Pool-->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/數據源的name"/>
</bean>
<!-- jdbcTemplate -->
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
㈧ java應用程序不能使用tomcat的連接池嗎
首先tomcat需要配置系統環境變數!!變數名:JAVA_HOME 變數值:jdk的根目錄,例如 C:\j2sdk1.4.2_07
其次如果不能運行的話,在我的電腦--右鍵管理--服務--把相關的oracle的服務改為手動。以免埠沖突!
如果在eclipse里運行tomcat的話,設置一下窗口---首選項里的tomcat的版本和路徑!
最後還不行的話!!!在C:WINDOWS\SYSTEM32\DRIVER\ETC\lmhosts.sam里的大約94行左右的埠8080設置為其他!
試試看。祝你成功!
㈨ java 數據源連接池在tomcat啟動完成之前配置好是為什麼
首先tomcat也是一個java程序,啟動時也是逐一啟動。連接池是java連接池只是調用tomcat中的api,當tomcat啟動一半可能就已經載入完了。
當以應用程序方式啟動tomcat時是可以看到啟動信息的,每一條信息都可以在tomcat目錄中找到對應的類。
如果是項目當中的web.xml則肯定是web.xml先。
㈩ tomcat連接池
因為使用了數據源連接池,則資料庫連接是由tomcat來創建,因此你只能將連接jar包放入到tomcat中才能使tomcat在啟動時通過包中的類創建連接.
如果放到你的項目里,tomcat本身是找不到這個連接包的