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