使用c3p0 ComboPooledDataSource时maxConnectionAge属性无法识别怎么办?
解决c3p0中maxConnectionAge属性无法识别的问题
嘿,这个问题我太熟悉了!你遇到的核心问题是使用的c3p0版本太老,maxConnectionAge这个属性根本就不存在于0.9.1.2版本里。
原因分析
maxConnectionAge是c3p0在0.9.5.1版本才新增的配置项,用来设置连接池中连接的最大存活时间。而你当前依赖的0.9.1.2是2007年发布的超老版本,那个时候还没有这个功能,所以不管是XML配置里的属性,还是代码里的setMaxConnectionAge()方法,自然都无法被识别。
解决方案:升级c3p0版本
只需要把pom.xml里的c3p0依赖版本升级到至少0.9.5.1,推荐使用较新的稳定版(比如0.9.5.5,这是目前比较常用的稳定版本):
<dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.5</version> </dependency>
升级完成后:
- XML配置里的
<property name="maxConnectionAge" value="7200" />就能正常生效 - 代码里的
cpds.setMaxConnectionAge(7200);也会被IDE智能提示识别,调用完全没问题
额外提示
老版本的c3p0存在不少已知的bug和性能瓶颈,升级到新版本不仅能解决这个属性的问题,还能获得更好的连接池稳定性、性能优化以及更多新特性,非常值得做这个升级。
内容的提问来源于stack exchange,提问作者Avi A
相关产品推荐
相关产品推荐

