Java 使用Quartz获取数据库连接

Java 使用Quartz获取数据库连接,java,jsp,jdbc,quartz-scheduler,Java,Jsp,Jdbc,Quartz Scheduler,我有一个要求,我需要在调度过程中插入数据并检索相同的数据。虽然我可以创建自己的连接类并可以完成这项工作,但我想知道是否有一种方法可以使用Quartz API获得数据库连接 因为Quartz能够高效地进行数据库连接和处理,所以我的意图是使用定义良好的结构,而不是创建自己的结构 我在Quartz中看到了以下代码 conn = DBConnectionManager.getInstance().getConnection( getDataSource());

我有一个要求,我需要在调度过程中插入数据并检索相同的数据。虽然我可以创建自己的连接类并可以完成这项工作,但我想知道是否有一种方法可以使用Quartz API获得数据库连接

因为Quartz能够高效地进行数据库连接和处理,所以我的意图是使用定义良好的结构,而不是创建自己的结构

我在Quartz中看到了以下代码

conn = DBConnectionManager.getInstance().getConnection(
                    getDataSource());
但是我不确定这种方法在获得连接方面有多好,或者是否有任何好的示例/资源来创建一个高效的数据库连接类

石英属性文件
通过将属性文件中定义的数据源命名为

conn = DBConnectionManager.getInstance().getConnection("myDS");
此处
myDS
是您在属性文件中定义的数据源的名称

但是,由于您正在使用quartz的底层数据池,请确保关闭连接,以便它能够返回到该池


这只是基于我对Quartz的了解以及它如何连接的一个概述。

如果您想获得
数据源

import java.io.InputStream;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.quartz.SchedulerException;
import org.quartz.utils.PoolingConnectionProvider;
import org.quartz.utils.PropertiesParser;

/**
 * This class just exposes the underlying data source backed by C3PO
 * (http://www.mchange.com/projects/c3p0/index.html).
 */
class MyDataSource extends PoolingConnectionProvider {
    public MyDataSource(Properties config) throws SchedulerException, SQLException {
        super(config);
    }

    public DataSource dataSource() {
        return getDataSource();
    }
}

/** This class exposes the data store configured in quartz.properties. */
public class MyDataSourceLoader {
    private static final String DATA_SOURCE_CONFIG = "quartz.properties";
    private static final String DATA_SOURCE_PREFIX = "org.quartz.dataSource.myDS";

    private static final DataSource dataSource;

    static {
        try {
            InputStream in           = Thread.currentThread().getContextClassLoader().getResourceAsStream(DATA_SOURCE_CONFIG);
            Properties  quartzConfig = new Properties();
            quartzConfig.load(in);
            in.close();

            PropertiesParser pp               = new PropertiesParser(quartzConfig);
            Properties       dataSourceConfig = pp.getPropertyGroup(DATA_SOURCE_PREFIX, true);
            MyDataSource     mds              = new MyDataSource(dataSourceConfig);
            dataSource = mds.dataSource();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public static DataSource dataSource() {
        return dataSource;
    }
}

如何配置您的
JDBCJobstore
?我的意思是如何传递
数据源
/数据库连接?@TomaszNurkiewicz:我使用的是属性文件,这是一个web应用程序。你更新了属性文件的帖子了吗
import java.io.InputStream;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.quartz.SchedulerException;
import org.quartz.utils.PoolingConnectionProvider;
import org.quartz.utils.PropertiesParser;

/**
 * This class just exposes the underlying data source backed by C3PO
 * (http://www.mchange.com/projects/c3p0/index.html).
 */
class MyDataSource extends PoolingConnectionProvider {
    public MyDataSource(Properties config) throws SchedulerException, SQLException {
        super(config);
    }

    public DataSource dataSource() {
        return getDataSource();
    }
}

/** This class exposes the data store configured in quartz.properties. */
public class MyDataSourceLoader {
    private static final String DATA_SOURCE_CONFIG = "quartz.properties";
    private static final String DATA_SOURCE_PREFIX = "org.quartz.dataSource.myDS";

    private static final DataSource dataSource;

    static {
        try {
            InputStream in           = Thread.currentThread().getContextClassLoader().getResourceAsStream(DATA_SOURCE_CONFIG);
            Properties  quartzConfig = new Properties();
            quartzConfig.load(in);
            in.close();

            PropertiesParser pp               = new PropertiesParser(quartzConfig);
            Properties       dataSourceConfig = pp.getPropertyGroup(DATA_SOURCE_PREFIX, true);
            MyDataSource     mds              = new MyDataSource(dataSourceConfig);
            dataSource = mds.dataSource();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public static DataSource dataSource() {
        return dataSource;
    }
}