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

使用 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国产综合精品 | 91精品国产乱码在线观看 | 精品国产一区二区三区香蕉事 | 日韩一区二区不卡 | 久久中国| 午夜探花在线观看 | 国产成人精品免费久久久久 | 亚洲一区二区福利视频 | 九九99久麻豆精品视传媒 | 日韩毛片一级 | 亚洲综合久久久久久中文字幕 | 9久re在线观看视频精品 | 欧美一欧美一区二三区性 | 日韩不卡在线 | 欧美一级人与动毛片免费播放 | 四虎影院网 | 国产欧美一区二区三区沐欲 | 免费黄色小视频在线观看 | 亚洲精品一区二区三区在线播放 | 四虎影视2022入口网址 | 亚洲你我色 | 国产精品视频专区 | 亚洲国产精品专区 | 在线视频这里只有精品 | 久久久精品 | 天天弄天天干 | 日韩欧美亚洲中字幕在线播放 | 手机看片精品高清国产日韩 | 久久最新免费视频 | 婷婷五月情 | 高清人人天天夜夜曰狠狠狠狠 | 天天干天天干 | 四虎1515hhwocw | 男人资源在线 | 人人干天天操 | 久久99国产精品免费观看 | 欧美日韩亚洲综合在线一区二区 | 奇米在线观看视频 | 国产免费变态视频网址网站 |