使用DBCP连接池对连接进行管理

 //需要引用的jar包有4个,分别是commons-pool2-2.4.2.jar、commons-dbcp2-2.1.1.jar、mysql-connector-java-5.1.42-bin.jar、commons-logging-1.2.jar //缺少一个都会报错(Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/pool2/PooledObjectFactory)意思是找不到这个包 //需要自己去官网下这几个包 //连接池是通过BasicDataSource对象对连接池进行管理的,我们需要把关于数据库的关键信息设置给连接池,跟jdbc一样,初始化后,其余的操作就跟jdbc一样了
 1 import java.sql.Connection;
 2 import java.sql.ResultSet;
 3 import java.sql.SQLException;
 4 import java.sql.Statement;
 5
 6 import org.apache.commons.dbcp2.BasicDataSource;
 7
 8 /**
 9  * @author 神余健芝
10  * @date 创建时间:2017年5月19日 下午7:00:04
11  */
12 public class DBPoolTest {
13
14     public static BasicDataSource ds = null;
15
16     public final static String DRIVER_NAME = "com.mysql.jdbc.Driver";
17     public final static String USER_NAME = "root";
18     public final static String PASSWORD = "123456";
19     public final static String DB_URL = "jdbc:mysql://localhost/shen_db?useUnicode=true&characterEncoding=utf-8&useSSL=false";
20
21     public static void dbpoolInit() {
22         ds = new BasicDataSource();
23         ds.setUrl(DB_URL);
24         ds.setDriverClassName(DRIVER_NAME);
25         ds.setUsername(USER_NAME);
26         ds.setPassword(PASSWORD);
27     }
28
29     public static void dbPoolTest() {
30         Connection conn = null;
31         Statement stmt = null;
32         ResultSet rs = null;
33         try {
34             conn = ds.getConnection();
35             stmt = conn.createStatement();
36             rs = stmt.executeQuery("select * from students");
37             while (rs.next()) {
38                 System.out.println(rs.getString("name"));
39             }
40         } catch (SQLException e) {
41             e.printStackTrace();
42         } finally {
43             try {
44                 if (conn != null)
45                     conn.close();
46                 if (stmt != null)
47                     stmt.close();
48                 if (rs != null)
49                     rs.close();
50             } catch (SQLException e1) {
51                 // 忽略
52             }
53
54         }
55     }
56
57     public static void main(String[] args) {
58         DBPoolTest.dbpoolInit();
59         DBPoolTest.dbPoolTest();
60     }
61
62 }
时间: 2024-08-07 08:39:33

使用DBCP连接池对连接进行管理的相关文章

HttpClient连接池的连接保持、超时和失效机制

HTTP是一种无连接的事务协议,底层使用的还是TCP,连接池复用的就是TCP连接,目的就是在一个TCP连接上进行多次的HTTP请求从而提高性能.每次HTTP请求结束的时候,HttpClient会判断连接是否可以保持,如果可以则交给连接管理器进行管理以备下次重用,否则直接关闭连接.这里涉及到三个问题: 1.如何判断连接是否可以保持? 要想保持连接,首先客户端需要告诉服务器希望保持长连接,这就是所谓的Keep-Alive模式(又称持久连接,连接重用),HTTP1.0中默认是关闭的,需要在HTTP头加

数据源,连接池,连接,jndi

连接池:连接池是由容器(比如Tomcat)提供的,用来管理池中的连接对象.连接池自动分配连接对象并对闲置的连接进行回收.连接池中的连接对象是由数据源(DataSource)创建的.连接池(Connection Pool)用来管理连接(Connection)对象. 数据源:数据源(DataSource)用来连接数据库,创建连接(Connection)对象. java.sql.DataSource接口负责建立与数据库的连接 由Tomcat提供,将连接保存在连接池中. JNDI(Java Naming

tomcat JDBC连接池c3p0连接资源耗尽导致tomcat实例对应的app移动端无法访问。

tomcat app手机端程序无法打开了. 直接查看tomcat日志: [[email protected] logs]$ tail catalina.out          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)         at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(Task

网络协议 finally{ return问题 注入问题 jdbc注册驱动问题 PreparedStatement 连接池目的 1.2.1DBCP连接池 C3P0连接池 MYSQL两种方式进行实物管理 JDBC事务 DBUtils事务 ThreadLocal 事务特性 并发访问 隔离级别

1.1.1 API详解:注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用 原因有2个: >导致驱动被注册2次. >强烈依赖数据库的驱动jar 解决办法: Class.forName("com.mysql.jdbc.Driver"); 1.1.2 API详解:java.sql.Statement接口: 操作sql语句,并返回相应结果 String sql = "某SQL语句&qu

JDBC从连接池获取连接

DBCP介绍 DBCP是Java开源连接池中最常用的一种,它一般应用在数据库使用非常频繁的系统中,可以处理数据库连接的大量请求,是做大型站点的首选数据库配置. 简单配置 driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/test username=root password=123456 maxActive=50 maxIdle=20 maxWait=60000 添加maven <dependency>

数据库会自动清除掉超时的空闲连接造成中间件连接池中连接断开的问题

所有的数据库都会自动清除掉超时的空闲连接,因为数据库本身是一个SOCKET服务器,它必须要定时清除掉僵死连接,来保持其长时间稳定运行. 数据库清除空闲连接以后,中间件连接池里面con.connected还是等于true,也就是说在中间件里面是无法判断连接池中的连接是否已经被数据库给清除了. 事实上中间件连接池中的所有连接必须保持24小时的连接是通的.那么如何解决这个矛盾呢? 答案是在连接池中设置定时器,定时检查池中的每一个连接,当池中的空闲连接已经超过了半小时,就自动将此连接断开并重连. {**

JSP(Servlet)中从连接池获取连接

1) 建立连接. 2) 执行SQL. 3) 处理结果. 4) 释放资源. Connection pool:连接池 DataSource: LDAP ( Light directory access protocal )轻量级目录访问协议. JNDI ( java naming director interface ) Java 命名目录接口. 使用连接池: 1)配置连接池: 改配置文件 conf/context.xml <Resource driverClassName="oracle.j

C3P0连接池拒绝连接

当出现c3p0 连接池显示以下错误: 1.检查你c3p0设置允许的最大连接数2.查看当前Oracle允许的最大连接数3.以上没问题,确认长链接的策略 [INFO] [c3p0] The following Exceptions occurred while trying to clean up a Connection's stranded resources: <com.mchange.v2.c3p0.impl.NewPooledConnection.markClosedProxyConnec

使用c3p0与DBCP连接池,造成的MySql 8小时问题解决方案

本文提供了对c3p0与DBCP连接池连接MySql数据库时, 8小时内无请求自动断开连接的解决方案.首先介绍一下我在项目(c3p0连接池)中遇到的问题,后面还提供了使用DBCP连接池的解决方案. 项目环境: Java Web项目框架为Spring MVC+JPA,使用c3p0连接池,发布环境为Tomcat 7 错误描述: 项目运行一段时间(大概几个小时)之后访问时会出现第一次访问报错,再次访问正常的现象,且多次出现此问题. 报错日志: [plain] view plaincopy org.spr