Quartz配置DataSources
配置DataSources
如果您使用JDBC-Jobstore,则需要使用DataSource(或使用两个DataSource,如果您使用JobStoreCMT)。
DataSources可以通过三种方式进行配置:
- 在quartz.properties文件中指定的所有池属性,以便Quartz可以自己创建DataSource。
- 可以指定应用程序服务器管理的Datasource的JNDI位置,以便Quartz可以使用它。
- 自定义的org.quartz.utils.ConnectionProvider实现。
建议您将Datasource max连接大小配置为至少线程池中的工作线程数量加上三个。如果您的应用程序也频繁调用调度程序API,则可能需要其他连接。如果您使用JobStoreCMT,则“非受管理”数据源的最大连接大小应至少为4。
您定义的每个DataSource(通常为一个或两个)必须为一个名称,并且您为每个定义的属性必须包含该名称,如下所示。DataSource的“NAME”可以是任何您想要的,除了能够在分配给JDBCJobStore之后能够识别它之外,没有什么意义。
Property Name | Required | Type | Default Value |
---|---|---|---|
org.quartz.dataSource.NAME.driver | yes | String | null |
org.quartz.dataSource.NAME.URL | yes | String | null |
org.quartz.dataSource.NAME.user | no | String | "" |
org.quartz.dataSource.NAME.password | no | String | "" |
org.quartz.dataSource.NAME.maxConnections | no | int | 10 |
org.quartz.dataSource.NAME.validationQuery | no | String | null |
org.quartz.dataSource.NAME.idleConnectionValidationSeconds | no | int | 50 |
org.quartz.dataSource.NAME.validateOnCheckout | no | boolean | false |
org.quartz.dataSource.NAME.discardIdleConnectionsSeconds | no | int | 0 (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 Name | Required | Type | Default Value |
---|---|---|---|
org.quartz.dataSource.NAME.jndiURL | yes | String | null |
org.quartz.dataSource.NAME.java.naming.factory.initial | no | String | null |
org.quartz.dataSource.NAME.java.naming.provider.url | no | String | null |
org.quartz.dataSource.NAME.java.naming.security.principal | no | String | null |
org.quartz.dataSource.NAME.java.naming.security.credentials | no | String | null |
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 Name | Required | Type | Default Value |
---|---|---|---|
org.quartz.dataSource.NAME.connectionProvider.class | yes | String (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