Java 石英调度器-每次新的jdbc连接

Java 石英调度器-每次新的jdbc连接,java,spring,hibernate,quartz-scheduler,Java,Spring,Hibernate,Quartz Scheduler,我在Quartz调度程序和数据库配置方面有问题。每次调度器检查新作业是否存在时,都会创建新的JDBC连接。如何避免创建新连接 2015-06-19 10:42:05,522 DEBUG DriverManagerDataSource:142 - Creating new JDBC DriverManager Connection to [jdbc:mysql://localhost:3306/db?characterEncoding=UTF-8] 2015-06-19 10:42:05,544

我在Quartz调度程序和数据库配置方面有问题。每次调度器检查新作业是否存在时,都会创建新的JDBC连接。如何避免创建新连接

2015-06-19 10:42:05,522 DEBUG DriverManagerDataSource:142 - Creating new JDBC DriverManager Connection to [jdbc:mysql://localhost:3306/db?characterEncoding=UTF-8]
2015-06-19 10:42:05,544 DEBUG LocalDataSourceJobStore:3182 - Found 0 triggers that missed their scheduled fire-time.
2015-06-19 10:42:05,545 DEBUG DataSourceUtils:327 - Returning JDBC Connection to DataSource
2015-06-19 10:42:07,522 DEBUG LocalDataSourceJobStore:3933 - MisfireHandler: scanning for misfires...
2015-06-19 10:42:07,522 DEBUG DriverManagerDataSource:142 - Creating new JDBC DriverManager Connection to [jdbc:mysql://localhost:3306/db?characterEncoding=UTF-8]
2015-06-19 10:42:07,539 DEBUG LocalDataSourceJobStore:3182 - Found 0 triggers that missed their scheduled fire-time.
2015-06-19 10:42:07,539 DEBUG DataSourceUtils:327 - Returning JDBC Connection to DataSource
和配置

<bean id="scheduler" name="scheduler"
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
    scope="singleton">
    <property name="quartzProperties">
        <props>

            <prop key="org.quartz.scheduler.instanceId">AUTO</prop>
            <prop key="org.quartz.scheduler.instanceName">USER_JOBS</prop>
            <prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop>
            <prop key="org.quartz.jobStore.driverDelegateClass">
                org.quartz.impl.jdbcjobstore.StdJDBCDelegate
            </prop>
            <prop key="org.quartz.jobStore.tablePrefix">QRTZ_</prop>
            <prop key="org.quartz.jobStore.isClustered">false</prop>
            <prop key="org.quartz.jobStore.clusterCheckinInterval">20000</prop>
            <prop key="org.quartz.jobStore.misfireThreshold">2000</prop>
        </props>
    </property>

    <property name="dataSource">
        <ref bean="dataSource" />
    </property>
</bean>

自动的
用户工作
org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.impl.jdbcjobstore.StdJDBCDelegate
QRTZ_
假的
20000
2000
和数据源,hibernate和quartz调度程序也是如此

<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${db.driver}" />
    <property name="url" value="${db.url}" />
    <property name="username" value="${db.username}" />
    <property name="password" value="${db.password}" />
</bean>

据我所知,您使用
org.springframework.jdbc.datasource.drivermanagedatasource
类作为数据源。根据javadoc,每次有人调用
getConnection
,它都会创建jdbc连接。我确信Quartz会在内部调用此方法


要解决这个问题,您应该使用池数据源。例如,c3p0(查看
com.mchange.v2.c3p0.ComboPooledDataSource

据我所知,您使用
org.springframework.jdbc.datasource.DriverManagerDataSource
类作为数据源。根据javadoc,每次有人调用
getConnection
,它都会创建jdbc连接。我确信Quartz会在内部调用此方法


要解决这个问题,您应该使用池数据源。例如,c3p0(查看
com.mchange.v2.c3p0.ComboPooledDataSource

您应该使用池数据源@Jens,我认为这实际上就是这个问题的答案。。在我的脑子里也添加了一些东西。谢谢。你应该使用一个集合数据源@Jens。我认为这实际上是这个问题的答案。。在我的脑子里也添加了一些东西。谢谢..我使用了org.apache.commons.dbcp.BasicDataSource,它也可以工作,无论如何,谢谢:)我认为c3p0比ApacheDBCP更适合生产。不管怎样,请随意选择最舒适的库)@NechaevSergey,DBCP的家伙们现在已经想出了DNCP2,它更强大,更健壮,我想我使用了org.apache.commons.DBCP.BasicDataSource,而且它也可以工作,谢谢:)我认为c3p0比apache DBCP更适合生产。无论如何,请随意选择最舒适的库)@NechaevSergey,DBCP的人现在已经想出了DNCP2,我认为它更强大、更健壮