在一个项目中,定时执行某一个任务,执行任务的时间可以从数据库中获取,这个怎么解决.
配置quartz数据源的三种方式
如果是使用了JDBC JobStore或JobStoreCMT获得持久的Job时,就要配置相关的数据源了。
方式一:使用quartz.properties文件,这时只需要在property文件中增加如下的一些属性就ok了。
org.quartz.dataSource.NAME.driver = 数据库驱动(requried)
org.quartz.dataSource.NAME.URL = 连接数据库的url (requried)
org.quartz.dataSource.NAME.user = 连接的数据库的用户名(not requried)
org.quartz.dataSource.NAME.password =连接的数据库的密码(not requried)
org.quartz.dataSource.NAME.maxConnections = 连接池中最大连接数(not requried)
org.quartz.dataSource.NAME.validationQuery = sql查询语句(not requried)
注:org.quartz.dataSource.NAME中的NAME是自己随便定义的一个数据源的名字。
方式二:使用自定义的ConnectionProvider配置数据源:
自定义一个ConnectionProvider类,并在quartz.properties文件中依据ConnectionProvider类配置它。
org.quartz.dataSource.myConProvider(数据源名).connectionProvider.class = XXXXX(自定义的ConnectionProvider)。
方式三:使用应用服务器中DataSource的属性
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的用户凭证
原文:http://blog.itpub.net/22682648/viewspace-616598/
我先扔个最简单的方法.
使用Executors.newScheduledThreadPool(), 来定时(比如每分钟)检查目标任务是否需要执行。
如果需要执行则执行,不需要则直接返回。
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
项目中
quartz
用的很多,可以书写cron
表达式,注册job
,一般为周期性。