我已经发现了问题所在,但我决定将其发布在此处,以防其他任何人撞到同一堵墙。
我已将最新版本的石英调度程序添加到我的项目中:
<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有帮助。即使没有实例化任何石英对象也会发生异常。
答案 0 :(得分:6)
自版本2.x起,Quartz使用c3p0
jdbc池作为分布式作业存储,我的项目也使用c3p0
,但是较新的0.9.5
版本,而石英使用{{} 1}}。这些版本相当不同,来自quartz的旧版本在我的类路径中排在第一位,导致运行时异常。由于我不使用石英分布式作业存储,我通过排除传递0.9.1.1
依赖来解决了这个问题:
c3p0