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

使用 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條評論
主站蜘蛛池模板: 欧美亚洲国产一级毛片 | 亚洲精品综合一二三区在线 | 欧美激情在线一区二区三区 | 亚洲一区二区三区中文字幕 | 精品伊人久久久99热这里只 | 免费一级欧美片在线观免看 | 老子影院午夜伦不卡 | 中文字幕一区视频 | 日本高清一级做a爱过程免费视频 | 中文精品久久久久中文 | 奇米444| 一级特黄aa大片欧美小说 | 久久久综合 | 五月开心六月伊人色婷婷 | 欧美成人免费观看久久 | 天天狠天天操 | 国产精品自在线拍国产 | 亚洲一区二区三区日本久久九 | 日本一级作爱片在线观看 | 日韩精品高清自在线 | 精产网红自拍在线 | 92精品国产自产在线观看 | 久久久久久久99精品免费观看 | 亚洲欧美色综合精品 | 亚洲人成在线精品不卡网 | 亚洲综合激情另类图片专区 | 国产啪视频1000部免费视频 | 伊人成人在线视频 | 人人爱操| 中文字幕波多野不卡一区 | 2019年国产高清情侣视频 | 亚洲激情在线 | 久久精品国产线看观看亚洲 | 久久久久久午夜精品 | 欧美亚洲国产色综合 | 天天曰曰 | 天天看天天干 | 美女视频黄的免费视频网页 | 日韩免费中文字幕 | 欧美成人精品高清在线观看 | 逼毛片 |