欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統 1983 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福利视频| 欧美巨波霸乳影院67194 | 久久精品一区 | 国产精品男人的天堂 | 久久精品免费一区二区三区 | 日本www.在线中文字幕 | 欧美日韩一区在线观看 | 青草香蕉精品视频在线观看 | 亚洲一级在线 | 午夜福利国产在线观看1 | 国产色婷婷亚洲99精品小说 | 999精品久久久 | 亚洲一区在线播放 | 国产激情91久久精品导航 | 国产天堂网 | 老子午夜影院 | 久久精品网 | 国产成人一区二区三区 | 国产午夜三级一区二区三桃花影视 | 三级视频网站 | 美女超碰 | 精品国内在线视频2019百度 | 国产三级做爰在线观看视频 | 亚洲国产最新 | 久久视频国产 | 99久热国产精品视频尤物不卡 | 欧美日韩亚洲一区二区 | 国产欧美视频在线观看 | 色播开心网 | 啪一啪| 久久草资源费视频在线观看 | 欧美大片欧美大片 | 亚洲综合图片人成综合网 | 久久爱伊人 | 99九九精品 | 欧美一区二区三区在线观看视频 | 欧美一区二区三区中文字幕 | 国产精品一码二码三码在线 | 国产午夜免费视频片夜色 | 日本在线视 | 91网址 |