Получение соединения с базой данных с использованием кварца - PullRequest
2 голосов
/ 29 февраля 2012

У меня есть требование, когда мне нужно вставлять данные и извлекать их во время процесса планирования. Хотя я могу создать свой собственный класс соединения и выполнять свою работу, но мне интересно, есть ли способ получить соединение с базой данных с Кварц API.

Поскольку 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 ]

5 голосов
/ 02 марта 2012

Вы можете установить соединение с использованием Quartz, указав источник данных, который вы определили в файле свойств, например

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

здесь myDS - это имя источника данных, который вы определили в файле свойств.

но поскольку вы используете базовый пул данных из кварца, убедитесь, что вы закрыли соединение, чтобы оно вернулось в пул.

Это просто схема, основанная на моих знанияхКварц и способ его получения.

1 голос
/ 07 апреля 2015

Если вы хотите получить 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;
    }
}
...