`
wjm0729
  • 浏览: 15463 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

将DBCP从Tomcat移植到项目中

    博客分类:
  • java
阅读更多

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&amp;characterEncoding=utf-        8&amp;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

 

这样就成功的把数据库的相关配置和操作都集成到自己的项目中,方便整体的管理和维护

--------------------------------------------------------------------------------------------------------

 

 

 

 

 

 

 

 

 


 

 

分享到:
评论

相关推荐

    主要功能是以tomcat7.0 DBCP为原型封装成为可移植的数据库连接工具包 可通用于JavaSE或JavaEE平台

    将Tomcat 7.0的DBCP封装为可移植的工具包,意味着开发者可以轻松地在不同的Java项目中复用这个连接池。这减少了代码重复,提高了代码质量,并且简化了系统集成的过程。无论是在桌面应用(JavaSE)还是分布式服务器...

    基于Java的Tomcat 7.0 DBCP数据库连接工具包设计源码 - dbcp

    本源码提供了一个基于Java的Tomcat 7.0 DBCP数据库连接工具包的设计。...该工具包以Tomcat 7.0的DBCP为原型进行封装,形成了一个可移植的数据库连接工具包,适用于JavaSE或JavaEE平台,特别适合Java初学者试用。

    Hibernate使用Tomcat连接池.doc

    本文将详细介绍如何在Hibernate中使用Tomcat的内置连接池DBCP(Database Connection Pool)。 首先,Tomcat的连接池配置是在`server.xml`文件中进行的。在`&lt;Context&gt;`标签内,我们需要添加一个名为`jdbc/quickstart...

    Tomcat数据源配置

    传统的做法是将数据源配置直接写入`server.xml`文件中,虽然简单易行,但在项目迁移或维护时会带来诸多不便。本文将详细介绍一种更为灵活且易于维护的数据源配置方法,并通过具体实例进行讲解。 #### 二、Tomcat...

    Java+Web整合开发与项目实战源代码

    在“Java+Web整合开发与项目实战源代码”中,我们可以深入探讨Java后端技术和Web前端技术的结合,以及如何将这些技术应用到实际项目中。这个资源包含了一系列的源代码,是学习和理解Java Web开发的一个宝贵资料库。...

    java宠物秀BBS论坛

    综上所述,Java宠物秀BBS论坛是一个全面的Java Web应用实例,涵盖了从后端开发到数据库管理的多个重要环节,对于学习和理解Java Web开发具有很高的参考价值。通过这个项目,开发者可以深入学习和实践相关技术,提升...

    用JNDI建立数据库连接池实例

    在这个实例中,我们将讨论如何在基于Tomcat的Web服务器上使用JNDI来创建数据库连接池。 首先,理解JNDI的工作原理至关重要。JNDI的核心是名称绑定,即将一个名称(比如“jdbc/myDataSource”)与一个对象(如数据库...

    JAVA常用jar包集合

    Java开发过程中,jar(Java Archive)包是必不可少的组件,它们包含了预编译的类、资源文件和元数据,使得开发者能够将多个类文件整合到一个单一的可移植格式中,便于分发和使用。本资源集合提供的是一些Java开发中...

    ojdbc14jar.rar

    使用ojdbc14.jar时,首先需要将其添加到Java项目的类路径中,这可以通过IDE如Eclipse或IntelliJ IDEA的配置来完成,或者在命令行中使用-classpath或-cp参数指定。在代码中,可以使用以下方式建立数据库连接: ```...

    java开发工程师简历模板2021.docx

    这个项目使用了Tomcat作为WEB服务器,Linux作为开发环境,并且依赖Oracle数据库。他在项目中主要负责资费管理、账务账号、业务账号和个人信息模块的开发。通过这个项目,他实践了Spring整合DAO操作,利用接口的多态...

    java+sql2000员工管理系统Java源码

    9. **部署与运行**:源码需要在特定的开发环境中运行,如Tomcat服务器和Java Development Kit (JDK)。理解如何配置这些环境以及如何部署和启动Java Web应用是运行和调试源码的关键。 通过分析和学习这个项目,...

    多层技术架构JAVA.pdf

    在应用服务器方面,我们使用 Tomcat、WebLogic、JBoss 等 J2EE 应用服务器,并遵循 SUN 公司提出的 J2EE 规范,以保证在不同的 J2EE 应用服务器中进行移植。 在中间件技术方面,我们使用了 Apache commons 等开源...

    mysql-connector-java-5.1.0.zip

    在实际开发中,为了确保项目可移植性和避免版本冲突,也可以将JAR文件添加到Maven或Gradle等构建工具的依赖管理中。这样,在构建应用时,驱动会自动被包含进应用的类路径。 总的来说,MySQL Connector/J 5.1.0是一...

    struts配置数据源的问题

    在本篇文章中,我们将深入探讨Struts配置数据源的相关知识点。 首先,了解数据源的概念。数据源(DataSource)是Java EE中一种管理数据库连接的机制,它可以提供池化的数据库连接,以提高系统性能和资源利用率。在...

    web学习笔记 —— 数据源

    在Web开发中,数据源通常指的是连接到数据库或者其他数据存储系统的接口,使得应用能够读取、写入或者操作数据。本篇文章将深入探讨数据源的相关知识,重点是Web环境下的数据源应用。 首先,我们需要了解什么是数据...

    JavaEE课堂笔记_rw.doc

    DBCP是一个独立的组件,只需要添加相应的jar文件(commons-dbcp.x.jar和commons-pool.x.jar)到项目中,然后通过编程实现连接的获取、释放和初始化。 实现数据库连接池的步骤包括: - 将必要的jar文件放入WEB-INF...

    T10数据源与连接池ppt

    在应用需要时,可以从池中获取一个连接,用完后归还而不是关闭,从而避免了频繁的数据库连接创建和释放操作,降低了系统开销。连接池还能限制最大连接数,防止系统因过多连接而导致内存泄漏或服务器崩溃。 **3. ...

    Jndi连接池

    Microsoft提供了适用于这些版本的JDBC驱动,可以在官方站点下载并添加到项目的类路径中。 使用JNDI连接池带来的优势包括: 1. **资源管理**:连接池可以高效地管理数据库连接,避免频繁创建和关闭连接带来的开销。...

    有用的东西 mybatis

    5. `backport-util-concurrent-3.1.jar` - 这是一个向旧版本JDK提供Java并发库的回移植,可能用于支持MyBatis中的线程安全操作。 6. `commons-lang3-3.1.jar` - Apache Commons Lang提供了一些Java语言实用工具,如...

    jsp学习资料非常不错哦

    本文将深入探讨JSP中的重要概念——连接池和Cookie,以及如何通过数据源配置提升应用性能。 首先,连接池是优化数据库访问效率的关键技术。在传统的JDBC(Java Database Connectivity)操作中,每次数据库交互都...

Global site tag (gtag.js) - Google Analytics