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
这样就成功的把数据库的相关配置和操作都集成到自己的项目中,方便整体的管理和维护
--------------------------------------------------------------------------------------------------------
分享到:
相关推荐
将Tomcat 7.0的DBCP封装为可移植的工具包,意味着开发者可以轻松地在不同的Java项目中复用这个连接池。这减少了代码重复,提高了代码质量,并且简化了系统集成的过程。无论是在桌面应用(JavaSE)还是分布式服务器...
本源码提供了一个基于Java的Tomcat 7.0 DBCP数据库连接工具包的设计。...该工具包以Tomcat 7.0的DBCP为原型进行封装,形成了一个可移植的数据库连接工具包,适用于JavaSE或JavaEE平台,特别适合Java初学者试用。
本文将详细介绍如何在Hibernate中使用Tomcat的内置连接池DBCP(Database Connection Pool)。 首先,Tomcat的连接池配置是在`server.xml`文件中进行的。在`<Context>`标签内,我们需要添加一个名为`jdbc/quickstart...
传统的做法是将数据源配置直接写入`server.xml`文件中,虽然简单易行,但在项目迁移或维护时会带来诸多不便。本文将详细介绍一种更为灵活且易于维护的数据源配置方法,并通过具体实例进行讲解。 #### 二、Tomcat...
在“Java+Web整合开发与项目实战源代码”中,我们可以深入探讨Java后端技术和Web前端技术的结合,以及如何将这些技术应用到实际项目中。这个资源包含了一系列的源代码,是学习和理解Java Web开发的一个宝贵资料库。...
综上所述,Java宠物秀BBS论坛是一个全面的Java Web应用实例,涵盖了从后端开发到数据库管理的多个重要环节,对于学习和理解Java Web开发具有很高的参考价值。通过这个项目,开发者可以深入学习和实践相关技术,提升...
在这个实例中,我们将讨论如何在基于Tomcat的Web服务器上使用JNDI来创建数据库连接池。 首先,理解JNDI的工作原理至关重要。JNDI的核心是名称绑定,即将一个名称(比如“jdbc/myDataSource”)与一个对象(如数据库...
Java开发过程中,jar(Java Archive)包是必不可少的组件,它们包含了预编译的类、资源文件和元数据,使得开发者能够将多个类文件整合到一个单一的可移植格式中,便于分发和使用。本资源集合提供的是一些Java开发中...
使用ojdbc14.jar时,首先需要将其添加到Java项目的类路径中,这可以通过IDE如Eclipse或IntelliJ IDEA的配置来完成,或者在命令行中使用-classpath或-cp参数指定。在代码中,可以使用以下方式建立数据库连接: ```...
这个项目使用了Tomcat作为WEB服务器,Linux作为开发环境,并且依赖Oracle数据库。他在项目中主要负责资费管理、账务账号、业务账号和个人信息模块的开发。通过这个项目,他实践了Spring整合DAO操作,利用接口的多态...
9. **部署与运行**:源码需要在特定的开发环境中运行,如Tomcat服务器和Java Development Kit (JDK)。理解如何配置这些环境以及如何部署和启动Java Web应用是运行和调试源码的关键。 通过分析和学习这个项目,...
在应用服务器方面,我们使用 Tomcat、WebLogic、JBoss 等 J2EE 应用服务器,并遵循 SUN 公司提出的 J2EE 规范,以保证在不同的 J2EE 应用服务器中进行移植。 在中间件技术方面,我们使用了 Apache commons 等开源...
在实际开发中,为了确保项目可移植性和避免版本冲突,也可以将JAR文件添加到Maven或Gradle等构建工具的依赖管理中。这样,在构建应用时,驱动会自动被包含进应用的类路径。 总的来说,MySQL Connector/J 5.1.0是一...
在本篇文章中,我们将深入探讨Struts配置数据源的相关知识点。 首先,了解数据源的概念。数据源(DataSource)是Java EE中一种管理数据库连接的机制,它可以提供池化的数据库连接,以提高系统性能和资源利用率。在...
在Web开发中,数据源通常指的是连接到数据库或者其他数据存储系统的接口,使得应用能够读取、写入或者操作数据。本篇文章将深入探讨数据源的相关知识,重点是Web环境下的数据源应用。 首先,我们需要了解什么是数据...
DBCP是一个独立的组件,只需要添加相应的jar文件(commons-dbcp.x.jar和commons-pool.x.jar)到项目中,然后通过编程实现连接的获取、释放和初始化。 实现数据库连接池的步骤包括: - 将必要的jar文件放入WEB-INF...
在应用需要时,可以从池中获取一个连接,用完后归还而不是关闭,从而避免了频繁的数据库连接创建和释放操作,降低了系统开销。连接池还能限制最大连接数,防止系统因过多连接而导致内存泄漏或服务器崩溃。 **3. ...
Microsoft提供了适用于这些版本的JDBC驱动,可以在官方站点下载并添加到项目的类路径中。 使用JNDI连接池带来的优势包括: 1. **资源管理**:连接池可以高效地管理数据库连接,避免频繁创建和关闭连接带来的开销。...
5. `backport-util-concurrent-3.1.jar` - 这是一个向旧版本JDK提供Java并发库的回移植,可能用于支持MyBatis中的线程安全操作。 6. `commons-lang3-3.1.jar` - Apache Commons Lang提供了一些Java语言实用工具,如...
本文将深入探讨JSP中的重要概念——连接池和Cookie,以及如何通过数据源配置提升应用性能。 首先,连接池是优化数据库访问效率的关键技术。在传统的JDBC(Java Database Connectivity)操作中,每次数据库交互都...