使用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">
重新打包,再次进行热部署,没有出现该异常信息,问题解决。
在此做下记录。
相关推荐
- **部署模式**:使用热部署减少重启时间。 ##### 2. HTTP请求的GET与POST方式的区别 - **GET**:通常用于获取资源,URL长度有限制。 - **POST**:用于发送数据,没有长度限制。 ##### 3. 解释一下什么是servlet ...
SpringCloud作为微服务解决方案的集大成者,为基于SpringBoot的应用提供了构建分布式系统所需的工具,如服务发现、配置管理、断路器、智能路由、微代理、控制总线等。它使得开发者能够轻松地在SpringBoot应用中实现...
【标签】"enterprise" 暗示了这份资料的重点在于企业级解决方案,这通常涉及高性能、高可用性和可扩展性的需求。企业Java通常包括Java EE(企业版)规范,如Servlets、JSP、EJB(Enterprise JavaBeans)、JMS(Java...
Liferay Portal是一款开源的企业级门户平台,它提供了一个强大的框架,用于构建、管理和...通过深入了解Liferay的架构和开发工具,开发者能够构建出符合业务需求的定制化解决方案,提升企业的工作效率和用户体验。
而SQL Server数据库则作为后端数据存储解决方案,用于存储用户信息、聊天记录等关键数据,确保数据的安全性和持久性。 在Java技术栈中,为了实现即时通讯功能,开发者通常会采用以下关键技术: 1. **Socket编程**...
Spring Security是Spring生态系统的安全模块,用于提供全面的安全解决方案。它能够处理认证(Authentication)和授权(Authorization),为Web应用和RESTful服务提供安全防护。Spring Security 4引入了一些新特性,...
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获...
- **微服务架构**:Spring Cloud 提供了一套完整的微服务解决方案,包括服务发现、配置管理、断路器等组件。 #### 六、Spring Boot 性能优化 - **热部署**:使用 DevTools 实现代码修改后自动重启应用。 - **JVM ...
例如,如果类路径下有JDBC驱动,那么SpringBoot就会自动配置数据源和JdbcTemplate。 3. **内嵌Web服务器(Embedded Web Server)** SpringBoot支持内嵌Tomcat、Jetty或Undertow等Web服务器,这使得我们可以直接...