`
tonybest
  • 浏览: 9761 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Tomcat热部署时出现无法注册JDBC驱动的解决方案

    博客分类:
  • java
阅读更多

使用Hudson做CI,进行自动部署时,出现如下异常:

 

The web application [/XXX] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered

       项目使用的数据库连接池是common-dbcp,然后在网上搜了一把,原因是从tomcat6.0.24之后加入了防止内存泄漏的机制,但是把server.xml中的<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />注释掉并不管用。

 

     后来在https://issues.apache.org/jira/browse/DBCP-332中找到解决方案,那就是重写BasicDataSource的close方法:

package com.ourcompany.util;

import java.sql.DriverManager;
import java.sql.SQLException;

import org.apache.commons.dbcp.BasicDataSource;

/** 
* @ClassName: OurDataSource 
* @Description: TODO(这里用一句话描述这个类的作用) 
* @author  
*/
public class OurDataSource extends BasicDataSource {
	@Override
	public synchronized void close() throws SQLException {
		DriverManager.deregisterDriver(DriverManager.getDriver(url));
		super.close();
	}
}

  然后修改application.xml中的配置为:

<bean id="dataSource" class="com.wafersystems.util.OurDataSource" destroy-method="close">

 重新打包,再次进行热部署,没有出现该异常信息,问题解决。

 在此做下记录。

      

分享到:
评论

相关推荐

    java面试题

    - **部署模式**:使用热部署减少重启时间。 ##### 2. HTTP请求的GET与POST方式的区别 - **GET**:通常用于获取资源,URL长度有限制。 - **POST**:用于发送数据,没有长度限制。 ##### 3. 解释一下什么是servlet ...

    Spring和SpringCloud视频

    SpringCloud作为微服务解决方案的集大成者,为基于SpringBoot的应用提供了构建分布式系统所需的工具,如服务发现、配置管理、断路器、智能路由、微代理、控制总线等。它使得开发者能够轻松地在SpringBoot应用中实现...

    (PDF) Enterprise Java For Linux - HOWTO.zip_enterprise

    【标签】"enterprise" 暗示了这份资料的重点在于企业级解决方案,这通常涉及高性能、高可用性和可扩展性的需求。企业Java通常包括Java EE(企业版)规范,如Servlets、JSP、EJB(Enterprise JavaBeans)、JMS(Java...

    Liferay Portal二次开发指南

    Liferay Portal是一款开源的企业级门户平台,它提供了一个强大的框架,用于构建、管理和...通过深入了解Liferay的架构和开发工具,开发者能够构建出符合业务需求的定制化解决方案,提升企业的工作效率和用户体验。

    java版仿QQ即时通讯系统

    而SQL Server数据库则作为后端数据存储解决方案,用于存储用户信息、聊天记录等关键数据,确保数据的安全性和持久性。 在Java技术栈中,为了实现即时通讯功能,开发者通常会采用以下关键技术: 1. **Socket编程**...

    boot+security4+mongodb+mybatis

    Spring Security是Spring生态系统的安全模块,用于提供全面的安全解决方案。它能够处理认证(Authentication)和授权(Authorization),为Web应用和RESTful服务提供安全防护。Spring Security 4引入了一些新特性,...

    超级有影响力霸气的Java面试题大全文档

     异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获...

    Spring boot视频

    - **微服务架构**:Spring Cloud 提供了一套完整的微服务解决方案,包括服务发现、配置管理、断路器等组件。 #### 六、Spring Boot 性能优化 - **热部署**:使用 DevTools 实现代码修改后自动重启应用。 - **JVM ...

    SpringBoot:学习Springboot

    例如,如果类路径下有JDBC驱动,那么SpringBoot就会自动配置数据源和JdbcTemplate。 3. **内嵌Web服务器(Embedded Web Server)** SpringBoot支持内嵌Tomcat、Jetty或Undertow等Web服务器,这使得我们可以直接...

Global site tag (gtag.js) - Google Analytics