亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

使用 Tomcat 7 新的連接池 —— Tomcat jdbc po

系統 1916 0

Tomcat 在 7.0 以前的版本都是使用? commons-dbcp ?做為連接池的實現,但是 dbcp 飽受詬病,原因有:

  1. dbcp 是單線程的,為了保證線程安全會鎖整個連接池
  2. dbcp 性能不佳
  3. dbcp 太復雜,超過 60 個類
  4. dbcp 使用靜態接口,在 JDK 1.6 編譯有問題
  5. dbcp 發展滯后

因此很多人會選擇一些第三方的連接池組件,例如? c3p0 ?,? bonecp ,? druid ?( @wenshao ?) 等。

為此,Tomcat 從 7.0 開始引入一個新的模塊:Tomcat jdbc pool

  1. tomcat jdbc pool 近乎兼容 dbcp ,性能更高
  2. 異步方式獲取連接
  3. tomcat jdbc pool 是 tomcat 的一個模塊,基于 tomcat JULI,使用 Tomcat 的日志框架
  4. 使用 javax.sql.PooledConnection 接口獲取連接
  5. 支持高并發應用環境
  6. 超簡單,核心文件只有8個,比 c3p0 還
  7. 更好的空閑連接處理機制
  8. 支持 JMX
  9. 支持 XA Connection

tomcat jdbc pool 的優點遠不止這些,詳情請看 這里 。

tomcat jdbc pool 可在 Tomcat 中直接使用,也可以在獨立的應用中使用。

Tomcat 中直接使用的方法:

數據源配置:

?

?

??????auth="Container"

??????type="javax.sql.DataSource"

??????factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"

??????testWhileIdle="true"

??????testOnBorrow="true"

??????testOnReturn="false"

??????validationQuery="SELECT 1"

??????validationInterval="30000"

??????timeBetweenEvictionRunsMillis="30000"

??????maxActive="100"

??????minIdle="10"

??????maxWait="10000"

??????initialSize="10"

??????removeAbandonedTimeout="60"

??????removeAbandoned="true"

??????logAbandoned="true"

??????minEvictableIdleTimeMillis="30000"

??????jmxEnabled="true"

??????jdbcInterceptors=

"org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"

??????username="root"

??????password="password"

??????driverClassName="com.mysql.jdbc.Driver"

??????url="jdbc:mysql://localhost:3306/mysql"/>

異步獲取連接的方法:

?

Connection con = null;

try {

??Future future = datasource.getConnectionAsync();

??while (!future.isDone()) {

??????System.out.println("Connection is not yet available. Do some background work");

??????try {

?Thread.sleep(100); //simulate work

??????}catch (InterruptedException x) {

?Thread.currentThread().interrupted();

??????}

??}

??con = future.get(); //should return instantly

??Statement st = con.createStatement();

??ResultSet rs = st.executeQuery("select * from user");

在獨立的應用中使用:

?

?

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.Statement;

?

import org.apache.tomcat.jdbc.pool.DataSource;

import org.apache.tomcat.jdbc.pool.PoolProperties;

?

public class SimplePOJOExample {

?

????public static void main(String[] args) throws Exception {

PoolProperties p = new PoolProperties();

p.setUrl("jdbc:mysql://localhost:3306/mysql");

p.setDriverClassName("com.mysql.jdbc.Driver");

p.setUsername("root");

p.setPassword("password");

p.setJmxEnabled(true);

p.setTestWhileIdle(false);

p.setTestOnBorrow(true);

p.setValidationQuery("SELECT 1");

p.setTestOnReturn(false);

p.setValidationInterval(30000);

p.setTimeBetweenEvictionRunsMillis(30000);

p.setMaxActive(100);

p.setInitialSize(10);

p.setMaxWait(10000);

p.setRemoveAbandonedTimeout(60);

p.setMinEvictableIdleTimeMillis(30000);

p.setMinIdle(10);

p.setLogAbandoned(true);

p.setRemoveAbandoned(true);

p.setJdbcInterceptors("org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;"+

?"org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer");

DataSource datasource = new DataSource();

datasource.setPoolProperties(p);

?

Connection con = null;

try {

?con = datasource.getConnection();

?Statement st = con.createStatement();

?ResultSet rs = st.executeQuery("select * from user");

?int cnt = 1;

?while (rs.next()) {

?????System.out.println((cnt++)+". Host:" +rs.getString("Host")+

" User:"+rs.getString("User")+" Password:"+rs.getString("Password"));

?}

?rs.close();

?st.close();

} finally {

?if (con!=null) try {con.close();}catch (Exception ignore) {}

}

????}

}

?

以上只是簡單的介紹,具體的使用方法還需參考:

https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

引自: http://www.oschina.net/question/12_36910

使用 Tomcat 7 新的連接池 —— Tomcat jdbc pool


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 免费四影虎ww4hu10 | 欧美激情高清免费不卡 | 高清国产一区 | 欧美激情久久久久久久久 | 亚洲成网站www久久九 | 精品久久久久久中文字幕网 | 亚洲免费黄色 | 精品在线99 | 欧美国产亚洲精品a第一页 欧美国产亚洲精品高清不卡 | 草草影院1| 伦理亚洲| 亚洲a视频 | 亚洲精品一区二区三区美女 | 久久好色 | 国产一区二区三区视频在线观看 | 国内精品久久久久久中文字幕 | 日日噜噜夜夜狠狠久久丁香 | 亚洲三及片 | 久久青草免费91线频观看不卡 | 免费福利视频在线观看 | 国产综合精品 | 国产精品自在自线免费观看 | 国产成人毛片亚洲精品不卡 | 午夜性色福利视频在线视频 | 久久99精品久久久久久 | 成年女人毛片免费播放视频m | 国产成人精品无缓存在线播放 | 久久久国产一区二区三区 | 日韩小视频在线播放 | 天天爱夜夜操 | 久久久www免费看片 久久久不卡 | 色综合网址 | 精品一本久久中文字幕 | 色综合色综合色综合网址 | 欧美日韩中文字幕在线视频 | 免费h片网站 | 九九久久久久久久爱 | 天天做天天爽爽快快 | 国产精品免费视频一区一 | 亚洲国产精品热久久 | 日本在线精品 |