c3p0连接池链接为关闭引起的tomcat启动问题

本文讲述了在Tomcat启动时遇到c3p0连接池警告,提示已注册的C3P0Registry mbean可能导致资源泄露。问题源于未在undeployment前关闭所有PooledDataSources。作者通过排查错误,发现是由于项目中DataSource配置缺少`destroy-method="close"`,导致连接未正确关闭。解决方案是在Spring的applicationcontext.xml或struts2的beans.xml中正确配置DataSource,添加`destroy-method="close"`属性,确保应用关闭时能正确释放数据库连接。
系统在启动的时候c3p0报警告信息“
A C3P0Registry mbean is already registered. This probably means that an application using c3p0 was undeployed, but not all PooledDataSources were closed prior to undeployment. This may lead to resource leaks over time. Please take care to close all PooledDataSources.” 
问题解决了报错代码没有保存,但是我的心情难以平复于是给大家写我这第一篇博文,让大家跳过这个坑
同学把项目在我的机器上运行以后,我再次运行我的spring项目时就爆出错误
com.mchang.v2.resourcepool.basicResourcepool$AcquireTask@606af5c2 - -Acquisition Attempt Faild!!! Clearing pending....
java.sql.SQLException: Accessdenied for user 'anqi'@'localhost'(using password:YES)
错误图中有
我开始以为是配置文件出错检查完所有配置文件,甚至重新导入项目都依然报错,在这期间还把项目源码搞丢了(大家项目一定要备份啊)话说class文件可以反编译
心里有了一丝安慰,于是继续找错
仔细看报错发现A C3P0Registry mbean is already registered,并且在后续的报错中发现了同学的数据库配置文件,这是铁证!!他把我机器搞坏了
然后读了读错误发现时他写的程序有问题c3p0链接吃在配置文件中未关闭,应该在spring的项目中的applicationcontext.xml或者struts2的beans.xml文件中有配置的
DataSource
正确的配置方式应该为
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"            
        destroy-method="close">                   
</bean>
注意一定要加上  destroy-method="close"这一句不然如果你配置的链接保持时间过长连接池虽然和mysql数据库断开链接但是依然没有关闭,当我的连接池创建时就会报错,尤其时两个项目同时运行
最后解决方法很暴力
把他的项目部署到我的设备上,把配置文件修改正确完了再次运行以后正确退出tomcat链接就会被释放,一切ok,我端坐一整天解决了此问题,也写下了我第一篇博文。


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值