dbcp可以直接在Tomcat中配置,如下:
1、配置Tomcat的conf下的server.xml中Host节点下的Context
<Context path="/myapp" docBase="...项目绝对路径\WebRoot" debug="5" reloadable="true" crossContext="true">
<Resource auth="Container" name="jdbc/myapp" type="javax.sql.DataSource"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/myapp?useUnicode=true&characterEncoding=utf- 8&autoReconnect=true"
username="root"
password="passwd"
maxActive="1000"
maxIdle="10"
maxWait="100"
removeAbandoned="true"
removeAbandonedTimeOut="10"
logAbandoned="true"/>
</Context>
2、然后在WEB项目中这样引用:
Context context = null;
private DataSource ds;
context = new InitialContext();
ds = (DataSource) context.lookup(Configuration.DATA_SOURCE);
其中Configuration.DATA_SOURCE 就是Resource 下的name="jdbc/myapp"属性值
这样有一个好处就是操作简单,快捷,但是不便于调试,Tomcat在重启时有点慢,而且不便于项目的部署和更新,
如果项目中要对数据库进行备份的话,数据库配置就得修改多个地方,麻烦...
***************************************************************************
下面介绍一下吧dbcp集成到项目当中的方法:
1、配置:
#...前面的driver、url等就根据自己的数据库设置
#************DBCP连接池设置************
#<!-- 初始化连接 -->
dbcp.initialSize=50
#<!-- 最大空闲连接 -->
dbcp.maxIdle=50
#<!-- 最小空闲连接 -->
dbcp.minIdle=5
#最大连接数量(并发量)
dbcp.maxActive=1000
#是否在自动回收超时连接的时候打印连接的超时错误
dbcp.logAbandoned=true
#是否自动回收超时连接
dbcp.removeAbandoned=true
#超时时间(以秒数为单位)
dbcp.removeAbandonedTimeout=600
#最大等待时间60秒(以毫秒为单位)
dbcp.maxWait=60000
实现Datasource类:
import java.sql.SQLException;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import com.zkht.steeltrade.dao.databackup.DBConfig;
/**
* DBCP 数据源
* @author wjm
*
*/
public class DBCPDataSourceFactory {
private static DataSource ds = null;
// private static ConnectionFactory factory = null;
private static DBCPDataSourceFactory instance = new DBCPDataSourceFactory();
private DBCPDataSourceFactory(){
if(ds==null){
ds=setupDataSource();
}
}
public static DBCPDataSourceFactory getInstance(){
return instance;
}
public DataSource lookupDataSource(){
return ds;
}
public void distoryDataSource(){
try {
if(!((BasicDataSource)ds).isClosed()){
((BasicDataSource)ds).close();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
if(ds!=null){
ds=null;
}
}
}
private static DataSource setupDataSource() {
int intInitalSize = 50;
try {
intInitalSize = Integer.parseInt(DBConfig.getDBCP_InitialSize());
} catch (Exception ex) {
}
int intMaxIdle = 50;
try {
intMaxIdle = Integer.parseInt(DBConfig.getDBCP_MaxIdle());
} catch (Exception ex) {
}
int intMinIdle = 5;
try {
intMinIdle = Integer.parseInt(DBConfig.getDBCP_MinIdle());
} catch (Exception ex) {
}
int intMaxActive = 100;
try {
intMaxActive = Integer.parseInt(DBConfig.getDBCP_MaxActive());
} catch (Exception ex) {
}
int removeAbandonedTimeout=1000;
try {
removeAbandonedTimeout = Integer.parseInt(DBConfig.getDBCP_RemoveAbandonedTimeout());
} catch (Exception ex) {
}
long maxWait=1000;
try {
maxWait = Long.parseLong(DBConfig.getDBCP_MaxWait());
} catch (Exception ex) {
}
BasicDataSource bds = new BasicDataSource();
bds.setDriverClassName(DBConfig.getDriverClassName());
bds.setUrl(DBConfig.getURL());
bds.setUsername(DBConfig.getMysql_name());
bds.setPassword(DBConfig.getMysql_password());
bds.setInitialSize(intInitalSize);
bds.setMaxIdle(intMaxIdle);
bds.setMinIdle(intMinIdle);
bds.setMaxActive(intMaxActive);
bds.setMaxWait(maxWait);
bds.setRemoveAbandoned("true".equals(DBConfig.getDBCP_RemoveAbandoned())?true:false);//超时回收
bds.setRemoveAbandonedTimeout(removeAbandonedTimeout);//超时等待时间
return bds;
}
}
其中DBConfig为项目中数据库配置文件的配置属性类,可以自己实现....
当然你还可以写一个监听类,去初始化和销毁DS
这样就成功的把数据库的相关配置和操作都集成到自己的项目中,方便整体的管理和维护
--------------------------------------------------------------------------------------------------------
分享到:
相关推荐
JavaEE 使用Tomcat的自带DBCP管理数据源案例
好不容易才找到的,在apache上可以下载tomcat的源码,但是没有tomcat-dbcp的源码,现在终于找到了,免费分享给大家,
NULL 博文链接:https://yelang2009.iteye.com/blog/404120
tomcat-dbcp.jar
tomcat5.5 dbcp 的配置方式
tomcat5.5 的dbcp配置
DBCP,C3P0,Tomcat_JDBC 性能及稳定性测试代码,和博客DBCP,C3P0,Tomcat_JDBC 性能及稳定性测试一起,单看代码的人慎下
tomcat6使用DBCP和blob出现ClassCastException解决方法
commons-collections-3.2-src.zip commons-dbcp-1.2.2-src.zip commons-pool-1.3-src.zip 用于在 Tomcat 中配置数据源的三个用到的包。
TOMCAT连接池DBCP,在server.xml中配置全局数据源详细的介绍,很有好用啊!!
tomcat6.0中配置JNDI的DBCP连接
DBCP(DataBase Connection Pool)是 apache common上的一个 java 连接池项目,也是 tomcat 使用的连接池组件,依赖 于Jakarta commons-pool 对象池机制,DBCP可以直接的在应用程序中使用。 使用DBCP会用到commons-...
DBCP连接池介绍 ---------------------...Tomcat7 中保留DBCP连接池,以兼容已有应用。并提供了新的Tomcat JDBC pool作为DBCP的可选替代。新出的Tomcat JDBC pool,据说比DBCP 1.4要好,未接触,也不在本文讨论范围内。
Tomcat 7-dbcp配置数据库连接池详解 原理 关于连接池,大家都晓得用来限定对数据库的连接。基本的原理是预先在缓冲池中放入一定的空闲连接,当程序需要和数据库来交互时,...如果是tomcat服务器,直接将驱动拷到to
是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。 单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar 由于建立数据库连接是一个非常耗时耗资源的行为,所以...
Tomcat连接池DBCP2密码加密
commons-dbcp.jar,commons-pool.jar,commons-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中...
主要功能是以tomcat7.0 DBCP为原型封装成为可移植的数据库连接工具包。可通用于JavaSE或JavaEE平台(适用于Java初学者试用)
COMMONS DBCP的使用与配置COMMONS DBCP的使用与配置COMMONS DBCP的使用与配置