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

来源:互联网 发布:自由现金流知乎 编辑:程序博客网 时间:2024/06/03 14:53
系统在启动的时候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 0