DBCP JAVA 连接池
- package com.sinoglobal.db;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.Locale;
- import java.util.ResourceBundle;
- import org.apache.commons.dbcp.ConnectionFactory;
- import org.apache.commons.dbcp.DriverManagerConnectionFactory;
- import org.apache.commons.dbcp.PoolableConnectionFactory;
- import org.apache.commons.dbcp.PoolingDriver;
- import org.apache.commons.pool.ObjectPool;
- import org.apache.commons.pool.impl.GenericObjectPool;
- @SuppressWarnings("unchecked")
- public class PoolManager {
- private static String driver = "net.sourceforge.jtds.jdbc.Driver"; // 驱动
- private static String url = ""; // URL
- private static String name = "sa"; // 用户名
- private static String password = ""; // 密码
- private static Class driverClass = null;
- private static ObjectPool connectionPool = null;
- private static String poolname = "";
- private static ResourceBundle rb;
- /**
- * 初始化数据源
- */
- private static synchronized void initDataSource() {
- if (driverClass == null) {
- try {
- driverClass = Class.forName(driver);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- }
- /**
- * 装配配置文件 initProperties
- */
- private static void loadProperties() {
- rb = ResourceBundle.getBundle("config", Locale.getDefault());
- driver = rb.getString("jdbc.sql.driverClassName");
- url = rb.getString("jdbc.sql.url");
- name = rb.getString("jdbc.sql.username");
- password = rb.getString("jdbc.sql.password");
- poolname = rb.getString("jdbc.sql.poolname");
- }
- /**
- * 连接池启动
- *
- * @throws Exception
- */
- public static void StartPool() {
- loadProperties();
- initDataSource();
- if (connectionPool != null) {
- ShutdownPool();
- }
- try {
- connectionPool = new GenericObjectPool(null);
- ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
- url, name, password);
- new PoolableConnectionFactory(connectionFactory, connectionPool,
- null, null, false, true);
- Class.forName("org.apache.commons.dbcp.PoolingDriver");
- PoolingDriver driver = (PoolingDriver) DriverManager
- .getDriver("jdbc:apache:commons:dbcp:");
- driver.registerPool(poolname, connectionPool);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 释放连接池
- */
- public static void ShutdownPool() {
- try {
- PoolingDriver driver = (PoolingDriver) DriverManager
- .getDriver("jdbc:apache:commons:dbcp:");
- driver.closePool(poolname);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- /**
- * 取得连接池中的连接
- *
- * @return
- */
- public static Connection getConnection() {
- Connection conn = null;
- if (connectionPool == null)
- StartPool();
- try {
- conn = DriverManager.getConnection("jdbc:apache:commons:dbcp:"
- + poolname);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return conn;
- }
- /**
- * 获取连接 getConnection
- *
- * @param name
- * @return
- */
- public static Connection getConnection(String name) {
- return getConnection();
- }
- /**
- * 释放连接 freeConnection
- *
- * @param conn
- */
- public static void freeConnection(Connection conn) {
- if (conn != null) {
- try {
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- /**
- * 释放连接 freeConnection
- *
- * @param name
- * @param con
- */
- public static void freeConnection(String name, Connection con) {
- freeConnection(con);
- }
- /**
- * 例子 main
- *
- * @param args
- */
- public static void main(String[] args) {
- try {
- Connection conn = PoolManager.getConnection();
- System.out.println(conn.isClosed());
- if (conn != null) {
- Statement statement = conn.createStatement();
- ResultSet rs = statement
- .executeQuery("select * from test2..log");
- int c = rs.getMetaData().getColumnCount();
- while (rs.next()) {
- System.out.println();
- for (int i = 1; i <= c; i++) {
- System.out.print(rs.getObject(i));
- }
- }
- rs.close();
- }
- PoolManager.freeConnection(conn);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
DBCP JAVA 连接池的更多相关文章
- DBCP数据源连接池实现原理分析
前些天在调试公司系统的时候发现这样的一个问题:mysql数据库服务停止一段时间后再次重启后吗,tomcat服务无法请求数据库服务,调试了半天对这个问题进行定位解决,期间也搞了很多有关mysql数据库的 ...
- 几个主流java连接池
池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销.这里所说的池是一种广义上的池,比如数据库连接池.线程池.内存池.对象池等.其中,对象池可以看成保存对 ...
- 转载: 几个主流的Java连接池整理
https://www.cnblogs.com/linjian/p/4831088.html 池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销.这里所 ...
- 几个主流的Java连接池整理
池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销.这里所说的池是一种广义上的池,比如数据库连接池.线程池.内存池.对象池等.其中,对象池可以看成保存对 ...
- Java 连接池的工作原理(转)
原文:Java 连接池的工作原理 什么是连接? 连接,是我们的编程语言与数据库交互的一种方式.我们经常会听到这么一句话“数据库连接很昂贵“. 有人接受这种说法,却不知道它的真正含义.因此,下面我将解释 ...
- [JavaEE] 了解Java连接池
转载自51CTO http://developer.51cto.com/art/201006/207768.htm 51CTO曾经为我们简单的介绍过Java连接池.要了解Java连接池我们先要了解数据 ...
- Redis Java连接池调研
Redis Java连接池调研 线上服务,由于压力大报错RedisTimeOut,但是需要定位到底问题出现在哪里? 查看Redis慢日志,slowlog get 发现耗时最大的也是11000us也就是 ...
- dbcp数据源连接池
一.数据源连接池 我们之前利用jdbc连接数据库,每次都要创建连接对象,销毁连接对象,如果并发访问量比较大,这样肯定比较辣 浪费数据库的效率,我们可以像之前mybatis中缓存查询到的数据一样,可以把 ...
- Java 使用 DBCP mysql 连接池 做数据库操作
需要的jar包有 commons-dbutils , commons-dbcp , commons-pool , mysql-connector-java 本地database.propertties ...
随机推荐
- prop
用法:prop(属性|key,value|fn) 用例:点击全选/取消全选 // 全选 和全不选 $("#check_all").click(function () { if ($ ...
- [团队项目] Scrum 项目 2.0 产品BACKLOG
Scrum 项目 2.0 阅读教材第8章,8.1~8.3节 P157~168,了解获取用户需求的办法,每个组可以选择一二加以应用. 8.4节P168-171 查阅NABCDA模型的具体说明. 2.SC ...
- HDU 4706:Children's Day
Children's Day Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- 使用KNN对MNIST数据集进行实验
由于KNN的计算量太大,还没有使用KD-tree进行优化,所以对于60000训练集,10000测试集的数据计算比较慢.这里只是想测试观察一下KNN的效果而已,不调参. K选择之前看过貌似最好不要超过2 ...
- JQuery-Table斑马线
HTML <html> <head> <link href="StyleSheet.css" rel="stylesheet" t ...
- JAVA基础知识之JVM-——通过反射查看类信息
Class实例 当类被加载之后,JVM中就会生成一个Class实例,通过这个实例就可以访问JVM中的这个类.有三种方式可以获取Class对象 使用Class的静态方法forName(完整包名) 调用类 ...
- c++中函数empty()怎么使用
string s = "";if (s.empty()){ cout << "字符串为空..";}else{ cout << " ...
- SharePoint API测试系列——Records.BypassLocks测试
转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 对于SharePoint中已经是Record的Item,我们想要修改他的属性,这在UI界面是无法完 ...
- Form1是父,form2是子,2的出现(覆盖在1的上面)不耽误1的操作
//在form1的点击事件中 form2 f2=new form2(); f2.owner=this;//很重要 f2.show();
- Linux 性能监控、测试、优化工具
Linux 平台上的性能工具有很多,眼花缭乱,长期的摸索和经验发现最好用的还是那些久经考验的.简单的小工具.系统性能专家 Brendan D. Gregg 在最近的 LinuxCon NA 2014 ...