博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql jdbc源码分析片段 和 Tomcat's JDBC Pool
阅读量:4476 次
发布时间:2019-06-08

本文共 4203 字,大约阅读时间需要 14 分钟。

32) Tomcat's JDBC PoolTomcat jdbc pool的使用仅需2个jar包,分别为tomcat-jdbc.jar和tomcat-juli.jar,这两个jar包都可以在tomcat7中找到,tomcat-jdbc.jar在tomcat的lib目录下,tomcat-juli.jar在bin目录下。http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/org.apache.tomcat.jdbc.pool  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) {}          }      }  }ProxyConnectionProxyConnectionPooledConnection con = idle.poll();ProxyConnection[PooledConnection[null]]00 00 00 00 03 73 65 6c     . . . . . s e l65 63 74 20 2a 20 46 52     e c t . * . F R4f 4d 20 74 63 5f 63 6f     O M . t c _ c o64 65 20 57 48 45 52 45     d e . W H E R E20 43 4f 44 45 5f 49 44     . C O D E _ I D3d 27 31 30 30 35 31 30     = ' 1 0 0 5 1 0 0 2 '30 32 27EscapeProcessorObject escapedSqlResult = EscapeProcessor.escapeSQL(sql, serverSupportsConvertFn(), getMultiHostSafeProxy()); EscapeTokenizer escapeTokenizer = new EscapeTokenizer(sql);[49, 48, 48, 53, 49, 48, 48, 50][39, 49, 48, 48, 53, 49, 48, 48, 50, 39][39, 49, 48, 48, 53, 49, 48, 48, 50, 39][[39, 49, 48, 48, 53, 49, 48, 48, 50, 39]]Buffer sendPacket = fillSendPacket();Buffer sendPacket = this.connection.getIO().getSharedSendPacket();this.position = MysqlIO.HEADER_LENGTH;this.results = executeInternal(this.maxRows, sendPacket, createStreamingResultSet(), true, metadataFromCache, false);Buffer getSharedSendPacket() {    if (this.sharedSendPacket == null) {        this.sharedSendPacket = new Buffer(INITIAL_PACKET_SIZE);    }    return this.sharedSendPacket;}protected MySQLConnection checkClosed() throws SQLException {    MySQLConnection c = this.connection;    if (c == null) {        throw SQLError.createSQLException(Messages.getString("Statement.49"), SQLError.SQL_STATE_ILLEGAL_ARGUMENT, getExceptionInterceptor());    }    return c;}public ResultSetInternalMethods execSQL(StatementImpl callingStatement, String sql, int maxRows, Buffer packet, int resultSetType, int resultSetConcurrency,            boolean streamResults, String catalog, Field[] cachedMetadata, boolean isBatch) throws SQLException return this.io.sqlQueryDirect(callingStatement, null, null, packet, maxRows, resultSetType, resultSetConcurrency, streamResults, catalog,                        cachedMetadata);StatementImplBuffer resultPacket = sendCommand(MysqlDefs.QUERY, null, queryPacket, false, null, 0);

  

转载于:https://www.cnblogs.com/MaxLife/p/9190847.html

你可能感兴趣的文章
JQuery学习系列篇(一)
查看>>
Centos7 minimal 系列之rabbitmq安装(八)
查看>>
英语语法(2)----点破主谓宾系表三大句型
查看>>
html如何与cgi数据交换,HTML网页与CGI之间通信的 实例分析
查看>>
html如何调用flash插件,htmlflash播放器插件如何播放 网页播放器flash插件怎么解决...
查看>>
mysql数据在html上面显示不出来的,HTML表格不能正确显示MySQL数据
查看>>
数据包和html,数据包和数据报有何区别?
查看>>
jq 异步调用一个html,聊聊如何将jQuery的$.ajax()用于异步HTTP请求
查看>>
html导出excel多sheet,js 导出多sheet表格
查看>>
html日期函数,我所见过的最简短、最灵活的javascript日期转字符串工具函数
查看>>
flann matlab,FLANN 快速的(近似)最近邻开源库
查看>>
pmta linux视频,PowerMTA (PMTA) 的安装和设置方法 – 黄忠 – 博客
查看>>
2016秋季C语言程序设计试题,2016c语言程序设计模拟试题
查看>>
C语言编程初体验 作文,C语言作文件操常用代码
查看>>
rar for android去广告,安卓解压神器RAR v5.30.39 去广告版
查看>>
android p什么变化,Android P预览版,这些调整和变化最值得关注
查看>>
android 7.0宽度432,全球最小的4G手机,比手掌还小,安卓7.0
查看>>
android fragmentstatepageradapter框架,Android FragmentStatePagerAdapter
查看>>
html自适应meta标签,自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结...
查看>>
html怎么加入编辑器,HTML 编辑器
查看>>