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