NPE в c3p0 NewProxyConnection.prepareStatement для кварца - PullRequest
0 голосов
/ 21 марта 2019

Теперь использую кварц 2.3.0 с hibernate-c3p0 5.4.1.Final, но получаю исключение ниже (см. Подробности трассировки стека ниже). Все работало нормально, внезапно начал получать это.

Использование, org.springframework.scheduling.quartz.SchedulerFactoryBean и org.springframework.scheduling.quartz.SpringBeanJobFactory вместе с конфигурацией источника данных ниже

<bean id="dataSource"
        class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUrl" value="#{'jdbc:mysql://' + systemEnvVarLoader.getSysEnvConfigProps('RDS_ENDPOINT') + ':' + systemEnvVarLoader.getSysEnvConfigProps('RDS_PORT') + '/' + systemEnvVarLoader.getSysEnvConfigProps('RDS_SCHEMA')}" />
        <property name="user" value="#{systemEnvVarLoader.getSysEnvConfigProps('RDS_USERNAME')}" />
        <property name="password" value="#{systemEnvVarLoader.getSysEnvConfigProps('RDS_PASSWORD')}" />
        <property name="minPoolSize" value="5" />
        <property name="maxPoolSize" value="20" />
        <property name="maxIdleTime" value="600" />
        <property name="maxStatements" value="50" />
        <property name="testConnectionOnCheckout" value="true" />
    </bean>

Трассировка стека, как показано ниже:

Caused by: java.sql.SQLException: You can't operate on a closed Connection!!!
    at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:118) ~[mchange-commons-java-0.2.11.jar:0.2.11]
    at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:77) ~[mchange-commons-java-0.2.11.jar:0.2.11]
    at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:576) ~[c3p0-0.9.5.2.jar:0.9.5.2]
    at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) ~[?:?]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_191]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_191]
    at org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.invoke(AttributeRestoringConnectionInvocationHandler.java:73) ~[quartz-2.3.0.jar:?]
    at com.sun.proxy.$Proxy35.prepareStatement(Unknown Source) ~[?:?]
    at org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.executeSQL(StdRowLockSemaphore.java:88) ~[quartz-2.3.0.jar:?]
    at org.quartz.impl.jdbcjobstore.DBSemaphore.obtainLock(DBSemaphore.java:113) ~[quartz-2.3.0.jar:?]
    at org.quartz.impl.jdbcjobstore.JobStoreCMT.executeInLock(JobStoreCMT.java:238) ~[quartz-2.3.0.jar:?]
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.removeJob(JobStoreSupport.java:1264) ~[quartz-2.3.0.jar:?]
    at org.quartz.core.QuartzScheduler.deleteJob(QuartzScheduler.java:971) ~[quartz-2.3.0.jar:?]
    at org.quartz.impl.StdScheduler.deleteJob(StdScheduler.java:301) ~[quartz-2.3.0.jar:?]

Caused by: java.lang.NullPointerException
    at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:540) ~[c3p0-0.9.5.2.jar:0.9.5.2]
    at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) ~[?:?]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_191]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_191]
    at org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.invoke(AttributeRestoringConnectionInvocationHandler.java:73) ~[quartz-2.3.0.jar:?]
    at com.sun.proxy.$Proxy35.prepareStatement(Unknown Source) ~[?:?]
    at org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.executeSQL(StdRowLockSemaphore.java:88) ~[quartz-2.3.0.jar:?]
    at org.quartz.impl.jdbcjobstore.DBSemaphore.obtainLock(DBSemaphore.java:113) ~[quartz-2.3.0.jar:?]
    at org.quartz.impl.jdbcjobstore.JobStoreCMT.executeInLock(JobStoreCMT.java:238) ~[quartz-2.3.0.jar:?]
    at org.quartz.impl.jdbcjobstore.JobStoreSupport.removeJob(JobStoreSupport.java:1264) ~[quartz-2.3.0.jar:?]
    at org.quartz.core.QuartzScheduler.deleteJob(QuartzScheduler.java:971) ~[quartz-2.3.0.jar:?]
    at org.quartz.impl.StdScheduler.deleteJob(StdScheduler.java:301) ~[quartz-2.3.0.jar:?]
...