【问题标题】:Getting Database Connection using Quartz使用 Quartz 获取数据库连接
【发布时间】:2012-03-19 01:46:59
【问题描述】:

我有一个要求,我需要在调度过程中插入数据并检索数据。虽然我可以创建自己的连接类并且可以完成工作,但我想知道有没有办法使用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

【问题讨论】:

  • 如何配置您的JDBCJobstore?我的意思是你如何传递DataSource/database 连接?
  • @TomaszNurkiewicz:我正在使用属性文件,这是一个网络应用程序。已经更新了属性文件的帖子

标签: java jsp jdbc quartz-scheduler


【解决方案1】:

您可以通过命名您在属性文件中定义的数据源来使用 Quartz 获得连接,例如

conn = DBConnectionManager.getInstance().getConnection("myDS");

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

但由于您使用的是石英的底层数据池,请确保您关闭连接,以便它应该回到池中。

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

【讨论】:

    【解决方案2】:

    如果你想得到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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-08-12
      • 1970-01-01
      • 2016-06-16
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 2019-01-27
      • 2012-07-13
      • 2013-08-07
      相关资源
      最近更新 更多