使用Quartz获取数据库连接

时间:2012-02-29 14:59:42

标签: java jsp jdbc quartz-scheduler

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

由于Quartz有效地进行数据库连接和处理,所以我的目的是使用一个定义良好的结构,而不是创建自己的结构。

我在Quartz中看到了以下代码

conn = DBConnectionManager.getInstance().getConnection(
                    getDataSource());

但我不确定这种方法获得连接有多好。或者是否有任何好的示例/资源来创建有效的数据库连接类。

石英属性文件

org.quartz.scheduler.instanceName=QuartzScheduler
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.threadPool.threadCount=7
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.MSSQLDelegate
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.dataSource = myDS
org.quartz.dataSource.myDS.driver=com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL=jdbc:mysql://localhost:3306/quartz
org.quartz.dataSource.myDS.user=root
org.quartz.dataSource.myDS.password=root
org.quartz.dataSource.myDS.maxConnections=5

2 个答案:

答案 0 :(得分:5)

您可以通过命名您在属性文件中定义的数据源(如

)来利用Quartz进行连接
conn = DBConnectionManager.getInstance().getConnection("myDS");

此处myDS是您在属性文件中定义的数据源的名称

但是由于您正在使用石英的基础数据池,请确保关闭连接以便它应该返回池中。

这只是基于我对Quartz及其连接方式的了解。

答案 1 :(得分:1)

如果您想获得DataSource

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;
    }
}