<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"><beans>
<bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="dataSource" ref ="dataSource" />
<property name="applicationContextSchedulerContextKey" value="applicationContextKey"/>
<property name="configLocation" value="classpath:quartz.properties"/>
</bean>
<bean id="simpleService" class="com.sundoctor.example.service.SimpleService"></bean>
<bean id="jobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>
com.sundoctor.example.service.MyQuartzJobBean
</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="simpleService">
<ref bean="simpleService"/>
</entry>
</map>
</property>
</bean>
<bean id="myJob" class="com.sundoctor.example.service.MyJob"></bean>
<bean id="job" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>com.sundoctor.example.service.TestJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="myJob">
<ref bean="myJob"/>
</entry>
</map>
</property>
</bean>
<bean name="schedulerService" class="com.sundoctor.quartz.service.SchedulerServiceImpl">
<property name="scheduler" ref="quartzScheduler"></property>
<property name="jobDetailMap">
<map>
<entry key="myJob"><ref bean="job"/></entry>
<entry key="jobDetail"><ref bean="jobDetail"/></entry>
</map>
</property>
<property name="quartzDao" ref="quartzDao"></property>
</bean>
</beans>
public void schedule(String name, CronExpression cronExpression,String group) {
if (name == null || name.trim().equals("")) {
name = UUID.randomUUID().toString();
}else{
//在名称后添加UUID,保证名称的唯一性
name +="&"+UUID.randomUUID().toString();
}
try {
JobDetail job =(JobDetail)jobDetailMap.get("jobDetail");
scheduler.addJob(job, true);
System.out.println("jobDetail:"+job.getName());
CronTrigger cronTrigger = new CronTrigger(name, group, job.getName(),
Scheduler.DEFAULT_GROUP);
cronTrigger.setCronExpression(cronExpression);
scheduler.scheduleJob(cronTrigger);
scheduler.rescheduleJob(cronTrigger.getName(), cronTrigger.getGroup(), cronTrigger);
} catch (SchedulerException e) {
throw new RuntimeException(e);
}
}下发任务后,每次都会执行任务都会执行两次
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"><beans>
<bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="dataSource" ref ="dataSource" />
<property name="applicationContextSchedulerContextKey" value="applicationContextKey"/>
<property name="configLocation" value="classpath:quartz.properties"/>
</bean>
<bean id="simpleService" class="com.sundoctor.example.service.SimpleService"></bean>
<bean id="jobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>
com.sundoctor.example.service.MyQuartzJobBean
</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="simpleService">
<ref bean="simpleService"/>
</entry>
</map>
</property>
</bean>
<bean id="myJob" class="com.sundoctor.example.service.MyJob"></bean>
<bean id="job" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>com.sundoctor.example.service.TestJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="myJob">
<ref bean="myJob"/>
</entry>
</map>
</property>
</bean>
<bean name="schedulerService" class="com.sundoctor.quartz.service.SchedulerServiceImpl">
<property name="scheduler" ref="quartzScheduler"></property>
<property name="jobDetailMap">
<map>
<entry key="myJob"><ref bean="job"/></entry>
<entry key="jobDetail"><ref bean="jobDetail"/></entry>
</map>
</property>
<property name="quartzDao" ref="quartzDao"></property>
</bean>
</beans>
public void schedule(String name, CronExpression cronExpression,String group) {
if (name == null || name.trim().equals("")) {
name = UUID.randomUUID().toString();
}else{
//在名称后添加UUID,保证名称的唯一性
name +="&"+UUID.randomUUID().toString();
}
try {
JobDetail job =(JobDetail)jobDetailMap.get("jobDetail");
scheduler.addJob(job, true);
System.out.println("jobDetail:"+job.getName());
CronTrigger cronTrigger = new CronTrigger(name, group, job.getName(),
Scheduler.DEFAULT_GROUP);
cronTrigger.setCronExpression(cronExpression);
scheduler.scheduleJob(cronTrigger);
scheduler.rescheduleJob(cronTrigger.getName(), cronTrigger.getGroup(), cronTrigger);
} catch (SchedulerException e) {
throw new RuntimeException(e);
}
}下发任务后,每次都会执行任务都会执行两次
解决方案 »
- 腾讯 新浪 搜狐 短网址 算法 讨论一下,寻找最佳、最合理、最适合扩展的方案
- Spring集成RMI实现客户访问服务器,如何实现冗余服务器操作?
- ssh
- 一个自己开发的框架,希望有人关注
- <xs:sequence maxoccurs = "unbounded"> 这个标签是什么意思?
- 一个Applet小应用程序!急等解决!(100分)谢谢大家!
- 迫不得已提个很菜的问题
- 请没有收到Tomcat配置手删的朋友与我联系
- J2EE的HELLOBEAN的问题!高手请进,高分!
- 我想独立开发一个基于J2EE标准的CRM,以便找工作时用,现在只剩下两三个月,可取吗?
- 如何修改XFIRE的框架
- 如何将jsp动态生成html,随数据更新而重新生成
如果你是用Tomcat,问题应该是出现在Tomcat的部署上面
你的工程在tomcat配置有两个Host,就相当于你启动了两个定时任务
看下这篇文章,希望对你有用
http://blog.163.com/qyr_ecust/blog/static/9793217620095222134687/
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
没有啊,我把appBase改了webapps下边的项目就没办法加载了