- 浏览: 928175 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (445)
- 备忘 (0)
- java基础 (28)
- jsp (15)
- css (4)
- javascript (30)
- struts (7)
- servlet (2)
- struts2 (7)
- jdbc (16)
- hibernate (22)
- ibatis (0)
- jpa (1)
- spring (17)
- spring定时任务 (8)
- 整合开发 (12)
- JavaArticle (0)
- php (6)
- velocity (2)
- mysql (19)
- sqlserver (52)
- oracle (23)
- lucene (49)
- ajax (13)
- dwr (5)
- JFreeChart (1)
- service (14)
- tools (18)
- c#基础 (20)
- 程序安全 (0)
- 学习网站 (1)
- 社会需求 (2)
- flash (1)
- 流媒体 (1)
- java_code (1)
- htmlparser (1)
- 速动画教程 (5)
- 设计模式 (1)
- xml操作 (2)
- uml操作 (4)
- 测试 (1)
- linux (8)
- 版本控制 (4)
- 服务器 (12)
- 安全 (6)
- 美工 (2)
最新评论
-
Zhang_amao:
我想问一下, 你用的lucene版本和highligher的版 ...
使用Lucene的Highlighter实现文件摘要的自动提取 -
wangmengfanwangzhi:
博主,你的QQ是什么啊?有关于lucene的问题想要请教啊~~ ...
Lucene下载及测试 -
cutesunshineriver:
讲得很好,理解起来很顺,对个人学习的帮助性很大,谢谢博主。
velocity入门一 -
libin2722:
我这里有一个任务调度,在晚上3点时候会自动将数据库中某表的数据 ...
Lucene-2.2.0 源代码阅读学习(16) -
greatwqs:
java -cp $JVM_ARGS $classpath ...
java的cp命令
动态启动,暂定,添加,删除定时功能,可传参数
Spring中使用Quartz的3种方法(MethodInvokingJobDetailFactoryBean,implements Job,extends QuartzJobBean)
以下介绍一下实现job接口的方法,通过此方法可以动态启动,暂定,添加,删除定时功能,可传参数。
所有数据全部持久化到数据表中,不再需要XML配置文件存储数据。quartz已经封装了持久化方法。数据表用的MYSQL见附件
配置quartz. properties
Java代码
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = AUTO
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 4
#============================================================================
# Configure JobStore
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
#org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
##org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
#org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.isClustered = false
#============================================================================
# Configure Datasources
#============================================================================
org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:3306/quartz?useUnicode=true&characterEncoding=utf8
org.quartz.dataSource.myDS.user = root
org.quartz.dataSource.myDS.password =
org.quartz.dataSource.myDS.maxConnections = 5
#org.quartz.dataSource.myDS.driver = org.postgresql.Driver
#org.quartz.dataSource.myDS.URL = jdbc:postgresql:dev
#org.quartz.dataSource.myDS.user = jhouse
#org.quartz.dataSource.myDS.password =
#org.quartz.dataSource.myDS.maxConnections = 5
#============================================================================
# Configure Plugins
#============================================================================
org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
#org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
# init plugin will load jobs.xml as a classpath resource i.e. /jobs.xml if not found on file system
#org.quartz.plugin.jobInitializer.fileName=jobs.xml
#org.quartz.plugin.jobInitializer.overWriteExistingJobs = false
#org.quartz.plugin.jobInitializer.failOnFileNotFound = false
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = AUTO
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 4
#============================================================================
# Configure JobStore
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
#org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
##org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
#org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.isClustered = false
#============================================================================
# Configure Datasources
#============================================================================
org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:3306/quartz?useUnicode=true&characterEncoding=utf8
org.quartz.dataSource.myDS.user = root
org.quartz.dataSource.myDS.password =
org.quartz.dataSource.myDS.maxConnections = 5
#org.quartz.dataSource.myDS.driver = org.postgresql.Driver
#org.quartz.dataSource.myDS.URL = jdbc:postgresql:dev
#org.quartz.dataSource.myDS.user = jhouse
#org.quartz.dataSource.myDS.password =
#org.quartz.dataSource.myDS.maxConnections = 5
#============================================================================
# Configure Plugins
#============================================================================
org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
#org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
# init plugin will load jobs.xml as a classpath resource i.e. /jobs.xml if not found on file system
#org.quartz.plugin.jobInitializer.fileName=jobs.xml
#org.quartz.plugin.jobInitializer.overWriteExistingJobs = false
#org.quartz.plugin.jobInitializer.failOnFileNotFound = false
在这里采用JobStoreTX,将任务持久化到数据中,而不再是简单的内存方式:RAMJobStore
在XML里加入:
在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用,提供了一个QuartzInitializerServlet和一个QuartzInitializerListener,用于在加载web应用时,对quartz进行初始化。
Xml代码
<servlet>
<servlet-name>
QuartzInitializer
</servlet-name>
<servlet-class>
org.quartz.ee.servlet.QuartzInitializerServlet
</servlet-class>
<init-param>
<param-name>config-file</param-name>
<param-value>/quartz.properties</param-value>
</init-param>
<init-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>
QuartzInitializer
</servlet-name>
<servlet-class>
org.quartz.ee.servlet.QuartzInitializerServlet
</servlet-class>
<init-param>
<param-name>config-file</param-name>
<param-value>/quartz.properties</param-value>
</init-param>
<init-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Java代码
public interface TimerService
{
public void setJobName(String jobName);
public void setJobGroup(String jobGroup);
public void setClassName(String string);
public void setCronExpression(String cronExpression);
public void setParameterNames(String[] strings);
public void setParameterValues(String[] strings);
/**
* 设置定时时间
* @param request
* @param jobName
* @param jobGroup
* @param triggerName
* @param triggerGroup
* @param cronExpression
*/
void saveCron(HttpServletRequest request,String jobName,String jobGroup,String triggerName,String triggerGroup,String cronExpression) throws SchedulerException, ParseException;
/**
* 删除定时器
* @param request
* @param jobName
* @param jobGroup
*/
void deleteTimer(HttpServletRequest request,String jobName,String jobGroup) throws SchedulerException;
/**
* 立即执行定时功能
* @param request
* @param jobName
* @param jobGroup
*/
void runNowTimer(HttpServletRequest request,String jobName,String jobGroup) throws SchedulerException;
/**
* 根据名称和组别暂停Tigger
* @param triggerName
* @param group
*/
void pauseTrigger(HttpServletRequest request,String triggerName,String group) throws SchedulerException;
/**
* 恢复Trigger
* @param triggerName
* @param group
*/
void resumeTrigger(HttpServletRequest request,String triggerName,String group) throws SchedulerException;
/**
* 删除Trigger
* @param triggerName
* @param group
*/
boolean removeTrigdger(HttpServletRequest request,String triggerName,String group) throws SchedulerException;
}
public class TimerServiceImpl implements TimerService
{
private ApplicationContext appCtx = null;
private Scheduler scheduler;
private String jobName = "";
private String jobGroup ="";
private String className = "";
private String cronExpression = "";
private String parameterNames[] = {};
private String parameterValues[] = {};
private JobDetail jobDetail = new JobDetail();
public String getJobName() {
return jobName;
}
public void setJobName(String jobName) {
this.jobName = jobName;
}
public String getJobGroup() {
return jobGroup;
}
public void setJobGroup(String jobGroup) {
this.jobGroup = jobGroup;
}
public String getClassName() {
return className;
}
public void setClassName(String string) {
className = string.trim();
}
public String getCronExpression() {
return cronExpression;
}
public void setCronExpression(String cronExpression) {
this.cronExpression = cronExpression;
}
public JobDetail getJobDetail() {
return jobDetail;
}
public void setJobDetail(JobDetail detail) {
jobDetail = detail;
}
public String[] getParameterNames() {
return parameterNames;
}
public String[] getParameterValues() {
return parameterValues;
}
public void setParameterNames(String[] strings) {
parameterNames = strings;
}
public void setParameterValues(String[] strings) {
parameterValues = strings;
}
public void saveTimer(HttpServletRequest request, String[] parameterNames,String[] parameterValues,JobDetail jobDetail)
throws SchedulerException, ClassNotFoundException
{
className = jobDetail.getJobClass().getName();
Class jobClass = Class.forName(className);
jobDetail.setJobClass(jobClass);
for (int i =0; i < parameterNames.length; i++) {
if (parameterNames[i].trim().length() > 0 && parameterValues[i].trim().length() > 0) {
jobDetail.getJobDataMap().put(parameterNames[i].trim(), parameterValues[i].trim());
jobDetail.getJobDataMap().put(parameterNames[i].trim(), parameterValues[i].trim());
}
}
boolean replace = true;
scheduler = ScheduleBase.getCurrentScheduler(request);
scheduler.addJob(jobDetail, replace);
}
public void saveCron(HttpServletRequest request, String jobName, String jobGroup, String triggerName
, String triggerGroup, String cronExpression) throws SchedulerException, ParseException
{
CronTrigger trigger = null;
if (cronExpression.length() > 2) {
trigger = new CronTrigger(triggerName,triggerGroup,jobName,jobGroup,cronExpression);
}
trigger.setVolatility(false);
scheduler = ScheduleBase.getCurrentScheduler(request);
scheduler.scheduleJob(trigger);
}
public void deleteTimer(HttpServletRequest request, String jobName,String jobGroup) throws SchedulerException
{
this.jobDetail = scheduler.getJobDetail(jobName, jobGroup);
if(this.jobDetail!=null){
scheduler = ScheduleBase.getCurrentScheduler(request);
scheduler.deleteJob(jobName, "DEFAULT");
}
}
public void runNowTimer(HttpServletRequest request, String jobName,String jobGroup) throws SchedulerException
{
scheduler = ScheduleBase.getCurrentScheduler(request);
scheduler.triggerJob(jobName, jobGroup);
}
public void pauseTrigger(HttpServletRequest request, String triggerName,String group) throws SchedulerException
{
scheduler = ScheduleBase.getCurrentScheduler(request);
scheduler.pauseTrigger(triggerName, group);//停止触发器
}
public void resumeTrigger(HttpServletRequest request, String triggerName,String group) throws SchedulerException
{
scheduler = ScheduleBase.getCurrentScheduler(request);
//Trigger trigger = scheduler.getTrigger(triggerName, group);
scheduler.resumeTrigger(triggerName, group);//重启触发器
}
public boolean removeTrigdger(HttpServletRequest request, String triggerName,String group) throws SchedulerException
{
scheduler = ScheduleBase.getCurrentScheduler(request);
scheduler.pauseTrigger(triggerName, group);//停止触发器
return scheduler.unscheduleJob(triggerName, group);//移除触发器
}
public void timerDataJob(JobExecutionContext context)
{
}
}
//实现job接口才能定时运行
public class TimerDataJob implements Job
{
private ApplicationContext appCtx = null;
private TimerService timerService = null;
public void execute(JobExecutionContext context)
throws JobExecutionException
{
try {
Map parameters=context.getJobDetail().getJobDataMap();
String str = (String)parameters.get("");//通过此方法获得需要的参数
appCtx = ApplicationContextKeeper.getAppCtx();//servlet类,项目启动时讲配置文件读入
timerService = (TimerService)appCtx.getBean("timerService");
System.out.println("----------定时结束-----------");
} catch (Exception e) {
e.printStackTrace();
}
}
}
来源:http://mengqingyu.iteye.com/blog/568935
发表评论
-
spring框架使用任务调度quartz的例子-TriggerListener 篇
2010-09-25 13:32 2605有时候我们的任务(Job)需要再某些任务完成之后才能进行;例如 ... -
Quartz(一)在Spring中设置动态定时任务
2010-09-25 11:10 2400什么是动态定时任务: 是由客户制定生成的,服务端只知道该去执行 ... -
Spring异步任务
2010-09-17 17:13 3634<!-- 任务从此处开始加载 --> ... -
Quartz任务调度快速入门(2)
2009-05-31 13:31 1988使用SimpleTrigger SimpleTrigger拥 ... -
Quartz任务调度快速入门(3)
2009-05-31 11:31 2030任务调度信息存储 在默认情况下Quartz将任务调度的运行信 ... -
spring多任务定时
2009-05-31 09:42 1301<bean id="testTask&qu ... -
Spring 定时任务功能
2009-05-20 09:34 14921:需要的jar包: Spring的包自然不必说 ...
相关推荐
在这个“quartz_springbatch_dynamic”项目中,我们将看到如何将这两个强大的工具结合起来,以实现动态集群环境中的定时任务执行,并使用MySQL作为数据存储。 Quartz是一个开源的作业调度框架,允许开发者创建、...
在Spring中整合Quartz,我们可以利用Spring的管理能力,如bean的生命周期管理和事务管理,来更方便地创建和管理定时任务。 **Spring+Quartz动态定时任务创建** 将Spring与Quartz结合,我们可以方便地在运行时动态...
在Spring框架中集成Quartz库可以实现强大的定时任务管理功能。Quartz是一个开源的作业调度框架,它允许程序创建和管理任务,以便在特定时间自动执行。Spring通过其优秀的依赖注入(DI)和AOP(面向切面编程)特性,...
本篇将深入探讨如何在Spring中启动和停止Quartz定时器。 首先,我们需要理解Spring和Quartz的基本概念。Spring是一个强大的Java企业级应用开发框架,它提供了依赖注入(DI)和面向切面编程(AOP)等核心特性。而...
5. **Spring的AOP与定时任务**:Spring的AOP(面向切面编程)可以用于在定时任务执行前后添加额外的逻辑,比如记录日志、事务管理等。这可以通过定义切面和通知来实现。 6. **异常处理**:在设计定时任务时,需要...
在IT行业中,构建高效、可扩展的Web应用是至关重要的,而"spring+springMVC+mybatis+quartz动态定时任务创建"就是一个常见的技术栈,用于实现这样的目标。这个组合充分利用了各组件的优势,提供了强大的后端服务支持...
本教程将详细介绍如何动态地在Quartz中添加、修改和删除定时任务,以实现灵活的任务控制。 首先,我们需要理解Quartz的核心组件。主要有以下几个: 1. **Job**:这是执行任务的实际代码,代表一个可执行的工作单元...
在本文中,我们将讨论如何使用 Spring Quartz 实现动态配置时间,并提供了详细的实现步骤和实践经验。 动态配置时间的目的 在实际应用中,任务的执行时间往往需要根据业务需求进行动态调整,以满足不同的需求场景...
Spring Quartz 动态暂停、恢复、修改定时任务的一个demo,使用maven构建,框架采用spring springmvc jpa,数据库mysql,含数据库脚本,运行可用,页面访问地址http://localhost:8080/quartz_demo/quartz/list
对于动态定时任务,Quartz提供了一种灵活的方式,允许在运行时添加、修改或删除任务。例如,可以创建一个服务接口,通过调用该接口来动态调整Trigger,从而达到改变任务执行频率或暂停任务的目的。 Quartz的集群...
Spring与Quartz的结合使用,使得我们可以方便地在Spring框架下管理定时任务,同时还能实现任务的动态添加、修改和删除。 Quartz是一个开源的作业调度框架,支持丰富的调度策略,包括简单的定时执行、按日程表执行...
Quartz是一款功能强大的开源作业调度框架,用于在Java应用程序中创建和管理定时任务。1.7版本是其历史上的一个稳定版本,提供了丰富的API和功能,使得开发者能够灵活地实现定时任务的动态管理,包括添加、修改和删除...
- 如何在Spring中配置Quartz - 如何创建和配置JobDetail和Trigger - Cron表达式的使用和理解 - 如何在Job类中注入依赖 - 如何启动和停止Scheduler - 如何调试和管理定时任务 总的来说,"Quartz+Spring定时触发器...
基于Spring的Quartz动态定时任务增删改查,代码简洁。后端采用SpringMvc+Spring+Mybatis+Quartz,前端采用Bootstrap框架,数据库采用MySQL;完成定时任务动态任务初始化,增删改查
在实际项目应用中经常会用到定时任务,可以通过quartz和spring的简单配置即可完成,但如果要改变任务的执行时间、频率,废弃任务等就需要改变配置甚至代码需要重启服务器,这里介绍一下如何通过quartz与spring的组合...
在Spring中集成Quartz,可以充分利用Spring的上下文管理和生命周期管理特性,简化定时任务的配置和管理。 **Quartz** 是一个开源的作业调度框架,它支持复杂的调度策略,如cron表达式,能够创建、调度和执行作业。...
在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java 定时器的功能。 Quartz 介绍 Quartz 是一个开源的作业调度器,可以让开发者轻松地实现任务的定时执行。它提供了强大的调度功能,可以满足复杂...
本文将详细介绍如何在Spring 3中配置Quartz来实现定时任务。 首先,理解定时任务的基本概念。定时任务是在指定时间点或按照一定规律自动执行的任务,这在业务系统中非常常见,例如数据清理、报表生成等。Quartz提供...
本篇文章将详细探讨如何在Spring Boot项目中整合Quartz,并通过MySQL数据库实现定时任务的动态配置。 首先,我们需要在项目中添加依赖。在Spring Boot的`pom.xml`文件中,引入Spring Boot的`spring-boot-starter-...
标题与描述均聚焦于“Quartz在Spring中动态设置cronExpression”的主题,这涉及到了两个主要的开源项目:Quartz,一个强大的作业调度框架;以及Spring,一个广泛使用的Java平台框架,用于构建企业级应用程序。Quartz...