OSchina上说DBCP不好用,没有多线程?,tomcat7已经不再采用了。可是不管好坏,放在我面前了,我总得看看。但是,使用BasicDataSource,怎么看也没发现使用到池的感觉。close也就是把它自己给干掉。就我想的吧,获取,释放,获取。。 但不是close掉啊。
还好,看到SharedPoolDataSource了,让我有点感觉了。API上还给出了例子,很给力啊。
自己也Test一把。记录下来吧。就这样。
package com.wxg.dbcp;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS;
import org.apache.commons.dbcp.datasources.SharedPoolDataSource;
public class Pool
{
private static DataSource ds;
private static SharedPoolDataSource tds;
static
{
DriverAdapterCPDS cpds = new DriverAdapterCPDS();
try {
cpds.setDriver("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
cpds.setUrl("jdbc:oracle:thin:@127.0.0.1:1521:ORCL");
cpds.setUser("kmuser");
cpds.setPassword("password");
tds = new SharedPoolDataSource();
tds.setConnectionPoolDataSource(cpds);
tds.setMaxActive(10);
tds.setMaxWait(50);
ds = tds;
}
public static Connection getConnection()
{
Connection conn = null;
try {
conn = ds.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static SharedPoolDataSource getSharedPoolDataSource(){
return tds;
}
public static DataSource getDataSource(){
return ds;
}
}
--
package com.wxg.dbcp;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection conn = Pool.getConnection();
Statement st = null;
ResultSet rs = null;
String sql = "select count(*) from T_BO_EMPLOYEE";
System.out.println(Pool.getSharedPoolDataSource().getNumActive());
try {
st = conn.createStatement();
rs = st.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getString(1));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(null != conn){
conn.close();
}
if(null != st){
st.close();
}
if(null != rs){
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println(Pool.getSharedPoolDataSource().getNumActive());
}
}
分享到:
相关推荐
DBCP是Apache提供的一款开源免费的数据库连接池!Hibernate3.0之后不再对DBCP提供支持!因为Hibernate声明DBCP有致命的缺欠!DBCP因为Hibernate的这一毁谤很是生气,并且说自己没有缺欠。
本案例主要讲解如何使用Tomcat服务器内置的DBCP(Database Connection Pool)数据源来高效、安全地管理数据库连接。DBCP是一个开源的数据库连接池实现,它允许应用程序在不创建新的数据库连接的情况下多次重用已存在...
在使用DBCP时,需要引入特定的jar包以确保其正常工作。以下将详细介绍这些jar包及其在DBCP中的作用。 1. `mysql-connector-java-5.0.8-bin.jar`: 这个jar包是MySQL的JDBC驱动程序,用于在Java应用程序中与MySQL...
DBCP通过维护一个连接池,可以在应用程序需要时快速提供已建立的数据库连接,用完后则将连接返回到池中,供其他线程重复使用,从而显著提高了数据库操作的效率。DBCP是Apache Commons项目的一部分,与Apache的其他...
6. **与应用服务器集成**:在Java EE环境中,DBCP可以与Tomcat、Jetty等应用服务器集成,通过服务器的JNDI服务暴露为数据源供应用使用。 7. **安全性考虑**:DBCP虽然方便,但需要注意其默认配置可能带来的安全风险...
在这个"dbcp连接池使用例子"中,我们将深入理解DBCP的工作原理、配置方法以及如何在实际项目中集成和使用。 DBCP连接池的基本概念: 1. 数据库连接池:在应用程序启动时,预先创建并维护一定数量的数据库连接,这些...
1. `commons-dbcp-1.4-javadoc.jar`:这个文件包含了DBCP 1.4版本的API文档,开发者可以查阅其中的类和方法说明,了解如何使用DBCP来建立和管理数据库连接池。 2. `commons-dbcp-1.4.jar`:这是DBCP的核心库,包含...
下面将详细介绍DBCP的使用与配置。 1. **依赖库** 使用DBCP时,需要引入以下JAR文件: - `commons-dbcp.jar`:包含了DBCP的主要功能。 - `commons-pool.jar`:提供对象池服务,DBCP依赖它来管理数据库连接。 - ...
它提供了一套对象池化的API,DBCP使用这个库来管理数据库连接的生命周期,包括创建、分配、回收和销毁。PoolableConnection是DBCP中的一个关键类,它实现了池化连接的逻辑,与PoolableConnectionFactory配合工作,...
单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar 由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库...
3. **配置DBCP**:在SpringMVC中使用DBCP,首先需要将所需的jar包引入到项目中,这里提供的"dbcp所需jar"应该包含了Apache Commons DBCP的相关依赖。通常,这些依赖包括`commons-dbcp.jar`和`commons-pool.jar`。...
本示例将简要介绍DBCP连接池的使用方法,以及如何将其集成到Java应用中。 首先,我们需要在项目中引入DBCP的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>commons-dbcp ...
DBCP(DataBase Connection Pool)是 apache common上的一个 java 连接池项目,也是 tomcat 使用的连接池组件,依赖 于Jakarta commons-pool 对象池机制,DBCP可以直接的在应用程序中使用。 使用DBCP会用到commons-...
Apache Commons DBCP 主要用于提高应用程序的性能,因为它允许重复使用数据库连接,避免了频繁创建和销毁连接所造成的开销。 在Java应用中,数据库连接的建立和关闭是一个相对耗时的过程。当多个用户并发访问数据库...
"使用说明.txt"可能包含有关如何在项目中配置和使用DBCP的详细步骤,包括但不限于: 1. 添加依赖:在Maven的pom.xml文件或Gradle的build.gradle文件中声明对DBCP的依赖。 2. 配置数据源:在Spring的配置文件中,...
4. **API使用**:阐述如何使用DBCP提供的API来获取和关闭数据库连接,以及如何进行异常处理。 5. **性能优化**:讨论DBCP的性能调优策略,如设置合适的连接池大小、启用连接验证和空闲检查频率等。 6. **与其他...
在Java应用程序中,使用DBCP可以提高数据库操作的效率和系统的稳定性。 1. **DBCP原理**: - 数据库连接池的核心思想是在应用程序启动时预先创建一定数量的数据库连接,并将这些连接放入池中管理。当程序需要连接...
开发工具 commons-dbcp2-2.1.1开发工具 commons-dbcp2-2.1.1开发工具 commons-dbcp2-2.1.1开发工具 commons-dbcp2-2.1.1开发工具 commons-dbcp2-2.1.1开发工具 commons-dbcp2-2.1.1开发工具 commons-dbcp2-2.1.1开发...
DBCP(Database Connection Pool)是Apache软件基金会的一个开源项目,全称为Apache Commons DBCP,它提供了...正确配置和使用DBCP,能够有效地管理数据库连接,避免资源浪费,是企业级Java应用开发中不可或缺的工具。
Apache Commons DBCP(Database Connection Pool)是Java世界中广泛使用的数据库连接池组件,它为应用程序提供了高效的数据库连接管理。在Java应用开发中,数据库连接池是必不可少的组件,它优化了数据库资源的分配...