Java 类org.quartz.utils.DBConnectionManager 实例源码

项目:motech    文件:SchedulerChannelProvider.java   
@Override
public long countTriggers() {
    try (Connection conn = DBConnectionManager.getInstance().getConnection(sqlProperties.getProperty(DATA_SOURCE));
         Statement stmt = conn.createStatement()) {

        ResultSet rs = stmt.executeQuery(buildCountTriggersQuery());

        if (rs.next()) {
            return rs.getInt(1);
        }

        return 0;
    } catch (SQLException e) {
        throw new TriggerRetrievalException("Couldn't count triggers for Scheduler channel", e);
    }
}
项目:motech    文件:MotechSchedulerDatabaseServiceImpl.java   
private List<List<Object>> executeQuery(String query, List<String> columns) throws SQLException {
    List<List<Object>> rows = new LinkedList<>();

    try (Connection conn = DBConnectionManager.getInstance().getConnection(sqlProperties.getProperty(DATA_SOURCE));
            Statement stmt = conn.createStatement()) {
        ResultSet rs = stmt.executeQuery(query);

        while (rs.next()) {
            List<Object> row = new LinkedList<>();
            if (columns != null) {
                for (String name : columns) {
                    row.add(rs.getObject(name));
                }
            }
            rows.add(row);
        }
    }
    return rows;
}
项目:jooby    文件:QuartzProvider.java   
@Inject
public QuartzProvider(final Injector injector, final Config config,
    @Named("org.quartz.jobs") final Map<JobDetail, Trigger> triggers) throws Exception {
  requireNonNull(injector, "An injector is required.");

  this.scheduler = new StdSchedulerFactory(properties(config)).getScheduler();
  this.jobs = triggers.entrySet();

  // override job factory
  scheduler.setJobFactory((bundle, sch) -> {
    JobDetail jobDetail = bundle.getJobDetail();
    Class<?> jobClass = jobDetail.getJobClass();

    return (Job) injector.getInstance(jobClass);
  });

  // hacky way of setting DS? quartz API sucks (it does too much or too little)
  if (config.hasPath(DS)) {
    String name = config.getString(DS);
    // get a provider, bc ds wont be ready yet.
    Provider<DataSource> ds = injector.getInstance(Key.get(DS_TYPE, Names.named(name)));
    DBConnectionManager.getInstance()
        .addConnectionProvider(name, new QuartzConnectionProvider(ds));
  }
}
项目:lams    文件:JobStoreCMT.java   
@Override
public void shutdown() {

    super.shutdown();

    try {
        DBConnectionManager.getInstance().shutdown(getNonManagedTXDataSource());
    } catch (SQLException sqle) {
        getLog().warn("Database connection shutdown unsuccessful.", sqle);
    }
}
项目:asura    文件:JobStoreCMT.java   
public void shutdown() {

        super.shutdown();

        try {
            DBConnectionManager.getInstance().shutdown(getNonManagedTXDataSource());
        } catch (SQLException sqle) {
            getLog().warn("Database connection shutdown unsuccessful.", sqle);
        }
    }
项目:motech    文件:SchedulerChannelProvider.java   
@Override
public List<TriggerEvent> getTriggers(int page, int pageSize) {

    try (Connection conn = DBConnectionManager.getInstance().getConnection(sqlProperties.getProperty(DATA_SOURCE));
         Statement stmt = conn.createStatement()) {

        ResultSet rs = stmt.executeQuery(buildGetTriggersQuery(page, pageSize));

        List<TriggerEvent> triggers = new ArrayList<>();
        while (rs.next()) {
            try (InputStream is = new ByteArrayInputStream(rs.getBytes(JOB_DATA));
                 ObjectInputStream ois = new ObjectInputStream(is)) {
                JobDataMap dataMap = (JobDataMap) ois.readObject();

                List<EventParameter> parameters = new ArrayList<>();
                parameters.add(new EventParameter("scheduler.jobId", MotechSchedulerService.JOB_ID_KEY));

                triggers.add(new TriggerEvent(
                        "Job: " + rs.getString(JOB_NAME),
                        rs.getString(JOB_NAME),
                        rs.getString(JOB_DESCRIPTION),
                        parameters,
                        dataMap.getString(SchedulerConstants.EVENT_TYPE_KEY_NAME)
                ));
            }
        }

        return triggers;
    } catch (SQLException|IOException|ClassNotFoundException e) {
        throw new TriggerRetrievalException("Couldn't retrieve triggers for Scheduler channel", e);
    }
}
项目:motech    文件:SchedulerChannelProvider.java   
@Override
public TriggerEvent getTrigger(TaskTriggerInformation info) {
    try (Connection conn = DBConnectionManager.getInstance().getConnection(sqlProperties.getProperty(DATA_SOURCE));
         Statement stmt = conn.createStatement()) {

        ResultSet rs = stmt.executeQuery(buildGetTriggerQuery(info.getSubject()));

        if (rs.next()) {
            try (InputStream is = new ByteArrayInputStream(rs.getBytes(JOB_DATA));
                 ObjectInputStream ois = new ObjectInputStream(is)) {
                JobDataMap dataMap = (JobDataMap) ois.readObject();

                List<EventParameter> parameters = new ArrayList<>();
                parameters.add(new EventParameter("scheduler.jobId", MotechSchedulerService.JOB_ID_KEY));

                return new TriggerEvent(
                        "Job: " + rs.getString(JOB_NAME),
                        rs.getString(JOB_NAME),
                        rs.getString(JOB_DESCRIPTION),
                        parameters,
                        dataMap.getString(SchedulerConstants.EVENT_TYPE_KEY_NAME)
                );
            }
        }

        return null;
    } catch (SQLException|IOException|ClassNotFoundException e) {
        throw new TriggerRetrievalException("Couldn't retrieve triggers for Scheduler channel", e);
    }
}
项目:motech    文件:MotechSchedulerDatabaseServiceImpl.java   
private int executeCountQuery(String query) throws SQLException {
    int rowConut = 0;
    try (Connection conn = DBConnectionManager.getInstance().getConnection(sqlProperties.getProperty(DATA_SOURCE));
            Statement stmt = conn.createStatement()) {
        ResultSet rs = stmt.executeQuery(query);
        rs.next();
        rowConut = rs.getInt(1);
    }
    return rowConut;
}
项目:lams    文件:LocalDataSourceJobStore.java   
@Override
public void initialize(ClassLoadHelper loadHelper, SchedulerSignaler signaler)
        throws SchedulerConfigException {

    // Absolutely needs thread-bound DataSource to initialize.
    this.dataSource = SchedulerFactoryBean.getConfigTimeDataSource();
    if (this.dataSource == null) {
        throw new SchedulerConfigException(
            "No local DataSource found for configuration - " +
            "'dataSource' property must be set on SchedulerFactoryBean");
    }

    // Configure transactional connection settings for Quartz.
    setDataSource(TX_DATA_SOURCE_PREFIX + getInstanceName());
    setDontSetAutoCommitFalse(true);

    // Register transactional ConnectionProvider for Quartz.
    DBConnectionManager.getInstance().addConnectionProvider(
            TX_DATA_SOURCE_PREFIX + getInstanceName(),
            new ConnectionProvider() {
                @Override
                public Connection getConnection() throws SQLException {
                    // Return a transactional Connection, if any.
                    return DataSourceUtils.doGetConnection(dataSource);
                }
                @Override
                public void shutdown() {
                    // Do nothing - a Spring-managed DataSource has its own lifecycle.
                }
                /* Quartz 2.2 initialize method */
                public void initialize() {
                    // Do nothing - a Spring-managed DataSource has its own lifecycle.
                }
            }
    );

    // Non-transactional DataSource is optional: fall back to default
    // DataSource if not explicitly specified.
    DataSource nonTxDataSource = SchedulerFactoryBean.getConfigTimeNonTransactionalDataSource();
    final DataSource nonTxDataSourceToUse = (nonTxDataSource != null ? nonTxDataSource : this.dataSource);

    // Configure non-transactional connection settings for Quartz.
    setNonManagedTXDataSource(NON_TX_DATA_SOURCE_PREFIX + getInstanceName());

    // Register non-transactional ConnectionProvider for Quartz.
    DBConnectionManager.getInstance().addConnectionProvider(
            NON_TX_DATA_SOURCE_PREFIX + getInstanceName(),
            new ConnectionProvider() {
                @Override
                public Connection getConnection() throws SQLException {
                    // Always return a non-transactional Connection.
                    return nonTxDataSourceToUse.getConnection();
                }
                @Override
                public void shutdown() {
                    // Do nothing - a Spring-managed DataSource has its own lifecycle.
                }
                /* Quartz 2.2 initialize method */
                public void initialize() {
                    // Do nothing - a Spring-managed DataSource has its own lifecycle.
                }
            }
    );

    // No, if HSQL is the platform, we really don't want to use locks...
    try {
        String productName = JdbcUtils.extractDatabaseMetaData(this.dataSource, "getDatabaseProductName").toString();
        productName = JdbcUtils.commonDatabaseName(productName);
        if (productName != null && productName.toLowerCase().contains("hsql")) {
            setUseDBLocks(false);
            setLockHandler(new SimpleSemaphore());
        }
    }
    catch (MetaDataAccessException ex) {
        logWarnIfNonZero(1, "Could not detect database type. Assuming locks can be taken.");
    }

    super.initialize(loadHelper, signaler);

}
项目:spring4-understanding    文件:LocalDataSourceJobStore.java   
@Override
public void initialize(ClassLoadHelper loadHelper, SchedulerSignaler signaler)
        throws SchedulerConfigException {

    // Absolutely needs thread-bound DataSource to initialize.
    this.dataSource = SchedulerFactoryBean.getConfigTimeDataSource();
    if (this.dataSource == null) {
        throw new SchedulerConfigException(
            "No local DataSource found for configuration - " +
            "'dataSource' property must be set on SchedulerFactoryBean");
    }

    // Configure transactional connection settings for Quartz.
    setDataSource(TX_DATA_SOURCE_PREFIX + getInstanceName());
    setDontSetAutoCommitFalse(true);

    // Register transactional ConnectionProvider for Quartz.
    DBConnectionManager.getInstance().addConnectionProvider(
            TX_DATA_SOURCE_PREFIX + getInstanceName(),
            new ConnectionProvider() {
                @Override
                public Connection getConnection() throws SQLException {
                    // Return a transactional Connection, if any.
                    return DataSourceUtils.doGetConnection(dataSource);
                }
                @Override
                public void shutdown() {
                    // Do nothing - a Spring-managed DataSource has its own lifecycle.
                }
                /* Quartz 2.2 initialize method */
                public void initialize() {
                    // Do nothing - a Spring-managed DataSource has its own lifecycle.
                }
            }
    );

    // Non-transactional DataSource is optional: fall back to default
    // DataSource if not explicitly specified.
    DataSource nonTxDataSource = SchedulerFactoryBean.getConfigTimeNonTransactionalDataSource();
    final DataSource nonTxDataSourceToUse = (nonTxDataSource != null ? nonTxDataSource : this.dataSource);

    // Configure non-transactional connection settings for Quartz.
    setNonManagedTXDataSource(NON_TX_DATA_SOURCE_PREFIX + getInstanceName());

    // Register non-transactional ConnectionProvider for Quartz.
    DBConnectionManager.getInstance().addConnectionProvider(
            NON_TX_DATA_SOURCE_PREFIX + getInstanceName(),
            new ConnectionProvider() {
                @Override
                public Connection getConnection() throws SQLException {
                    // Always return a non-transactional Connection.
                    return nonTxDataSourceToUse.getConnection();
                }
                @Override
                public void shutdown() {
                    // Do nothing - a Spring-managed DataSource has its own lifecycle.
                }
                /* Quartz 2.2 initialize method */
                public void initialize() {
                    // Do nothing - a Spring-managed DataSource has its own lifecycle.
                }
            }
    );

    // No, if HSQL is the platform, we really don't want to use locks...
    try {
        String productName = JdbcUtils.extractDatabaseMetaData(this.dataSource, "getDatabaseProductName").toString();
        productName = JdbcUtils.commonDatabaseName(productName);
        if (productName != null && productName.toLowerCase().contains("hsql")) {
            setUseDBLocks(false);
            setLockHandler(new SimpleSemaphore());
        }
    }
    catch (MetaDataAccessException ex) {
        logWarnIfNonZero(1, "Could not detect database type. Assuming locks can be taken.");
    }

    super.initialize(loadHelper, signaler);

}
项目:class-guard    文件:LocalDataSourceJobStore.java   
@Override
public void initialize(ClassLoadHelper loadHelper, SchedulerSignaler signaler)
        throws SchedulerConfigException {

    // Absolutely needs thread-bound DataSource to initialize.
    this.dataSource = SchedulerFactoryBean.getConfigTimeDataSource();
    if (this.dataSource == null) {
        throw new SchedulerConfigException(
            "No local DataSource found for configuration - " +
            "'dataSource' property must be set on SchedulerFactoryBean");
    }

    // Configure transactional connection settings for Quartz.
    setDataSource(TX_DATA_SOURCE_PREFIX + getInstanceName());
    setDontSetAutoCommitFalse(true);

    // Register transactional ConnectionProvider for Quartz.
    DBConnectionManager.getInstance().addConnectionProvider(
            TX_DATA_SOURCE_PREFIX + getInstanceName(),
            new ConnectionProvider() {
                public Connection getConnection() throws SQLException {
                    // Return a transactional Connection, if any.
                    return DataSourceUtils.doGetConnection(dataSource);
                }
                public void shutdown() {
                    // Do nothing - a Spring-managed DataSource has its own lifecycle.
                }
                /* Quartz 2.2 initialize method */
                public void initialize() {
                    // Do nothing - a Spring-managed DataSource has its own lifecycle.
                }
            }
    );

    // Non-transactional DataSource is optional: fall back to default
    // DataSource if not explicitly specified.
    DataSource nonTxDataSource = SchedulerFactoryBean.getConfigTimeNonTransactionalDataSource();
    final DataSource nonTxDataSourceToUse = (nonTxDataSource != null ? nonTxDataSource : this.dataSource);

    // Configure non-transactional connection settings for Quartz.
    setNonManagedTXDataSource(NON_TX_DATA_SOURCE_PREFIX + getInstanceName());

    // Register non-transactional ConnectionProvider for Quartz.
    DBConnectionManager.getInstance().addConnectionProvider(
            NON_TX_DATA_SOURCE_PREFIX + getInstanceName(),
            new ConnectionProvider() {
                public Connection getConnection() throws SQLException {
                    // Always return a non-transactional Connection.
                    return nonTxDataSourceToUse.getConnection();
                }
                public void shutdown() {
                    // Do nothing - a Spring-managed DataSource has its own lifecycle.
                }
                /* Quartz 2.2 initialize method */
                public void initialize() {
                    // Do nothing - a Spring-managed DataSource has its own lifecycle.
                }
            }
    );

    // No, if HSQL is the platform, we really don't want to use locks...
    try {
        String productName = JdbcUtils.extractDatabaseMetaData(this.dataSource, "getDatabaseProductName").toString();
        productName = JdbcUtils.commonDatabaseName(productName);
        if (productName != null && productName.toLowerCase().contains("hsql")) {
            setUseDBLocks(false);
            setLockHandler(new SimpleSemaphore());
        }
    }
    catch (MetaDataAccessException ex) {
        logWarnIfNonZero(1, "Could not detect database type. Assuming locks can be taken.");
    }

    super.initialize(loadHelper, signaler);

}