spring+quartz 配置多个动态定时任务出错,请帮忙看看,谢谢

jjoott 2011-03-24 04:07:38
<?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);
}
}

下发任务后,每次都会执行任务都会执行两次
...全文
668 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveofmylife 2011-03-24
  • 打赏
  • 举报
回复
你看你src下 有没有quartz_job.xml和quartz.properties这两个文件,你是在程序中定义的Scheduler,有可能在这个quartz_job.xml中重复定义了
jjoott 2011-03-24
  • 打赏
  • 举报
回复
<Host name="localhost" appBase=""
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
没有啊,我把appBase改了webapps下边的项目就没办法加载了
luman2002 2011-03-24
  • 打赏
  • 举报
回复
你的quartz应该没问题
如果你是用Tomcat,问题应该是出现在Tomcat的部署上面
你的工程在tomcat配置有两个Host,就相当于你启动了两个定时任务
看下这篇文章,希望对你有用
http://blog.163.com/qyr_ecust/blog/static/9793217620095222134687/

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧