连接池 commons-dbcp2-2.1.1使用
来源:互联网 发布:原生js特效懒人之家 编辑:程序博客网 时间:2024/06/14 20:26
原理就不说了 百度一坨坨
配置文件:
driverClassName=dm.jdbc.driver.DmDriverurl=jdbc\:dm\://192.168.0.1\:5240?autoReconnect\=trueusername=aaaapassword=qqqqqq#最小空闲连接minIdle=5#最大空闲连接mzxIdle=20maxActive=400#初始化连接数initialSize=30#连接遗漏时是否打印logAbandoned=true#是否自动回收超时连接removeAbandoned=true#等待超时最大时间maxWait=5000
编写测试代码
package createTmrData;import java.io.InputStream;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;import java.util.Properties;import org.apache.commons.dbcp2.BasicDataSource;import org.apache.commons.dbcp2.BasicDataSourceFactory;public class JDBCTest { public static void main(String[] args) { BasicDataSource bs = null; Properties p = new Properties(); InputStream inStream = JDBCTest.class.getResourceAsStream("/conf/jdbc.properties"); try { p.load(inStream); bs = BasicDataSourceFactory.createDataSource(p); Connection conn = bs.getConnection(); Statement stm = conn.createStatement(); ResultSet set = stm.executeQuery("select count(*) from RDP_MD_CUSTOMERTABLE"); while(set.next()){ System.out.println("表总数为:"+set.getString(1));; } conn.close(); } catch (Exception e) { } }}
添加包commons-dbcp2-2.1.1.jar
下载地址:http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi
执行报如下错误
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactoryat org.apache.commons.dbcp2.BasicDataSourceFactory.<clinit>(BasicDataSourceFactory.java:64)at createTmrData.JDBCTest.main(JDBCTest.java:20)Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactoryat java.net.URLClassLoader$1.run(Unknown Source)at java.net.URLClassLoader$1.run(Unknown Source)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)... 2 more
解决办法:
添加commons-logging-4.0.6.jar
执行结果:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/pool2/PooledObjectFactoryat org.apache.commons.dbcp2.BasicDataSourceFactory.createDataSource(BasicDataSourceFactory.java:338)at createTmrData.JDBCTest.main(JDBCTest.java:20)Caused by: java.lang.ClassNotFoundException: org.apache.commons.pool2.PooledObjectFactoryat java.net.URLClassLoader$1.run(Unknown Source)at java.net.URLClassLoader$1.run(Unknown Source)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)at java.lang.ClassLoader.loadClass(Unknown Source)... 2 more
解决办法:添加commons-pool2-2.4.2.jar
下载地址:http://commons.apache.org/proper/commons-pool/download_pool.cgi
再执行:
表总数为:5625838执行成功了
下来看一下基本的参数配置,我们打开BasicDataSourceFactory.createDataSource(p)的源代码:
public static BasicDataSource createDataSource(Properties properties) throws Exception { BasicDataSource dataSource = new BasicDataSource(); String value = null; value = properties.getProperty(PROP_DEFAULTAUTOCOMMIT); if (value != null) { dataSource.setDefaultAutoCommit(Boolean.valueOf(value)); } value = properties.getProperty(PROP_DEFAULTREADONLY); if (value != null) { dataSource.setDefaultReadOnly(Boolean.valueOf(value)); } .......... // Return the configured DataSource instance return dataSource; }这个方法返回了一个DataSource的实例,这里用了一大堆代码读取我们配置的参数赋值给了BasicDataSource的对象
我们再看一下有有哪些重要配置
在这个的最上面定义了一大堆final 静态的配置,final是为了不让人恶意更改:
下面我列出一些常用的配置:
private static final String PROP_DEFAULTAUTOCOMMIT = "defaultAutoCommit";//是否自动提交 private static final String PROP_DEFAULTREADONLY = "defaultReadOnly";//是否只读 private static final String PROP_DEFAULTTRANSACTIONISOLATION = "defaultTransactionIsolation";//<code class="language-yaml"><span class="com">指定由连接池所创建的连接的事务隔离级别</span></code> private static final String PROP_MAXIDLE = "maxIdle";//<code class="language-yaml"><span class="com">最大的空闲连接数量</span></code> private static final String PROP_MINIDLE = "minIdle";//<code class="language-yaml"><span class="com">最小的空闲链接数量</span></code> private static final String PROP_INITIALSIZE = "initialSize";//<code class="language-yaml"><span class="com">初始化时连接池中connection数量</span></code> private static final String PROP_MAXWAITMILLIS = "maxWaitMillis";//<code class="language-yaml"><span class="com">最大的等待时间,单位是毫秒</span></code> private static final String PROP_PASSWORD = "password"; private static final String PROP_URL = "url"; private static final String PROP_USERNAME = "username"; private static final String PROP_CONNECTIONPROPERTIES = "connectionProperties";//<code class="language-yaml">建立连接时的附加参数,如果指定的编码不一致数据库中会出现乱码</code> private static final String NUPROP_MAXACTIVE = "maxActive";//<code class="language-yaml"><span class="com">最大连接数量</span></code>
1 0
- 连接池 commons-dbcp2-2.1.1使用
- Java使用commons-dbcp2.0
- DBCP2 连接池配置
- java使用dbcp2连接mysql
- 【跟我学apache-commons(三)】DBCP2.2---JavaSE配置DBCP连接池
- Java数据库连接池commons-dbcp升级到commons-dbcp2
- java使用dbcp2数据库连接池
- 使用DBUtils+DBCP2+pool2+logging第三方工具类,创建连接池
- Java学习笔记—使用dbcp2数据库连接池方式连接测试数据库
- DBCP2获取连接
- spring4.x中dbcp,dbcp2连接池的配置
- Spring--java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource问题解决
- MyBatis数据库连接出现Communications link failure现象的解决办法(dbcp2连接池)
- 使用spring配置dbcp2和pool2
- 使用spring配置dbcp2和pool2
- common-dbcp2数据库连接池参数说明
- common-dbcp2数据库连接池参数说明
- commons-dbcp连接池的分析
- Fast R-CNN
- 5.4.4 关键路径
- Dual Band Wireless-AC 3165无线驱动无法开启wifi
- 为mysql master主机新建一slave并监控slave一致性
- mysql将死锁信息记录到error log
- 连接池 commons-dbcp2-2.1.1使用
- 关于时间格式问题
- ios-- 开发者所需要知道的 iOS 10 SDK 新特性
- spring aop入门1
- 计网--ARQ与滑动窗口协议
- 二叉树Morris Traversal
- 历史证明品牌人格化是个好策略
- Linux常用命令二(持续更新)
- 一个简单的 vue.js 实践教程