阅读(2988) (0)

Quartz配置DataSources

2017-09-28 14:02:33 更新

配置DataSources

如果您使用JDBC-Jobstore,则需要使用DataSource(或使用两个DataSource,如果您使用JobStoreCMT)。

DataSources可以通过三种方式进行配置:

  1. 在quartz.properties文件中指定的所有池属性,以便Quartz可以自己创建DataSource。
  2. 可以指定应用程序服务器管理的Datasource的JNDI位置,以便Quartz可以使用它。
  3. 自定义的org.quartz.utils.ConnectionProvider实现。

建议您将Datasource max连接大小配置为至少线程池中的工作线程数量加上三个。如果您的应用程序也频繁调用调度程序API,则可能需要其他连接。如果您使用JobStoreCMT,则“非受管理”数据源的最大连接大小应至少为4。

您定义的每个DataSource(通常为一个或两个)必须为一个名称,并且您为每个定义的属性必须包含该名称,如下所示。DataSource的“NAME”可以是任何您想要的,除了能够在分配给JDBCJobStore之后能够识别它之外,没有什么意义。

Property NameRequiredTypeDefault Value
org.quartz.dataSource.NAME.driveryesStringnull
org.quartz.dataSource.NAME.URLyesStringnull
org.quartz.dataSource.NAME.usernoString""
org.quartz.dataSource.NAME.passwordnoString""
org.quartz.dataSource.NAME.maxConnectionsnoint10
org.quartz.dataSource.NAME.validationQuerynoStringnull
org.quartz.dataSource.NAME.idleConnectionValidationSecondsnoint50
org.quartz.dataSource.NAME.validateOnCheckoutnobooleanfalse
org.quartz.dataSource.NAME.discardIdleConnectionsSecondsnoint0 (disabled)

org.quartz.dataSource.NAME.driver

必须是数据库的JDBC驱动程序的java类名称。

org.quartz.dataSource.NAME.URL

连接到数据库的连接URL(主机,端口等)。

org.quartz.dataSource.NAME.user

连接到数据库时要使用的用户名。

org.quartz.dataSource.NAME.password

连接到数据库时使用的密码。

org.quartz.dataSource.NAME.maxConnections

DataSource可以在其连接池中创建的最大连接数。

org.quartz.dataSource.NAME.validationQuery

是可选的SQL查询字符串,DataSource可用于检测和替换失败/损坏的连接。例如,oracle用户可能会选择“从user_tables中选择table_name” - 这是一个不应该失败的查询 - 除非连接实际上是坏的。

org.quartz.dataSource.NAME.idleConnectionValidationSeconds

空闲连接测试之间的秒数 - 仅在设置验证查询属性时启用。默认值为50秒。

org.quartz.dataSource.NAME.validateOnCheckout

每次从池中检索连接时,是否应该执行数据库sql查询来验证连接,以确保它仍然有效。如果为假,则在办理登机手续时将进行验证。默认值为false。

org.quartz.dataSource.NAME.discardIdleConnectionsSeconds

它们在空闲之后放弃连接几秒钟。0禁用该功能。默认值为0。

Quartz定义的DataSource示例

org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@ 10.0.1.23:1521:demodb
org.quartz.dataSource.myDS.user = myUser
org.quartz.dataSource.myDS.password = myPassword
org.quartz.dataSource.myDS.maxConnections = 30

对Application Server DataSources的引用使用以下属性定义:

Property NameRequiredTypeDefault Value
org.quartz.dataSource.NAME.jndiURLyesStringnull
org.quartz.dataSource.NAME.java.naming.factory.initialnoStringnull
org.quartz.dataSource.NAME.java.naming.provider.urlnoStringnull
org.quartz.dataSource.NAME.java.naming.security.principalnoStringnull
org.quartz.dataSource.NAME.java.naming.security.credentialsnoStringnull

org.quartz.dataSource.NAME.jndiURL

由应用程序服务器管理的DataSource的JNDI URL。

org.quartz.dataSource.NAME.java.naming.factory.initial

要使用的JNDI InitialContextFactory的(可选)类名。

org.quartz.dataSource.NAME.java.naming.provider.url

用于连接到JNDI上下文的(可选)URL。

org.quartz.dataSource.NAME.java.naming.security.principal

用于连接到JNDI上下文的(可选)用户主体。

org.quartz.dataSource.NAME.java.naming.security.credentials

用于连接到JNDI上下文的(可选)用户凭据。

从应用程序服务器引用的数据源示例

org.quartz.dataSource.myOtherDS.jndiURL = JDBC / myDataSource
org.quartz.dataSource.myOtherDS.java.naming.factory.initial = com.evermind.server.rmi.RMIInitialContextFactory
org.quartz.dataSource.myOtherDS.java.naming.provider.url = ormi:// localhost
 org.quartz.dataSource.myOtherDS.java.naming.security.principal = admin
org.quartz.dataSource.myOtherDS.java.naming.security.credentials = 123

自定义ConnectionProvider实现

Property NameRequiredTypeDefault Value
org.quartz.dataSource.NAME.connectionProvider.classyesString (class name)null

org.quartz.dataSource.NAME.connectionProvider.class

要使用的ConnectionProvider的类名。实例化之后,Quartz可以自动设置实例上的配置属性,bean样式。

使用自定义ConnectionProvider实现的示例

org.quartz.dataSource.myCustomDS.connectionProvider.class = com.foo.FooConnectionProvider
org.quartz.dataSource.myCustomDS.someStringProperty = someValue
org.quartz.dataSource.myCustomDS.someIntProperty = 5