将石英添加到项目中断jdbc dataSource

时间:2015-09-21 16:30:39

标签: java spring maven quartz-scheduler c3p0

  

我已经发现了问题所在,但我决定将其发布在此处,以防其他任何人撞到同一堵墙。

我已将最新版本的石英调度程序添加到我的项目中:

<dependency>
   <groupId>org.quartz-scheduler</groupId>
   <artifactId>quartz</artifactId>
   <version>2.2.1</version>
</dependency>

突然间测试开始下降:

org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [ my sql ]; SQL state [null]; error code [0]; An SQLException was provoked by the following failure: java.lang.InterruptedException; nested exception is java.sql.SQLException: An SQLException was provoked by the following failure: java.lang.InterruptedException  

更奇怪的是,当我将石英依赖转移到另一个模块时,它们开始失败,但有不同的例外:

Could not get JDBC Connection; nested exception is java.sql.SQLException: com.mchange.v2.c3p0.ComboPooledDataSource[ identityToken -> z8kfsx9b1qeyobp10iytmq|796c39ad, dataSourceName -> z8kfsx9b1qeyobp10iytmq|796c39ad ] has been closed() -- you can no longer use it.

所以,Spring关闭了我的ComboPooledDataSource,但为什么呢?

删除石英或将其版本更改为1.8.x有帮助。即使没有实例化任何石英对象也会发生异常。

1 个答案:

答案 0 :(得分:6)

自版本2.x起,Quartz使用c3p0 jdbc池作为分布式作业存储,我的项目也使用c3p0,但是较新的0.9.5版本,而石英使用{{} 1}}。这些版本相当不同,来自quartz的旧版本在我的类路径中排在第一位,导致运行时异常。由于我不使用石英分布式作业存储,我通过排除传递0.9.1.1依赖来解决了这个问题:

c3p0