关于Quartz问题

zydolphin 2008-08-28 03:12:56
我在做quartz得web应用时,通过servlet初始化定时器,
在初始化servlet过程中,从指定的任务配置文件(job.xml)中初始化计划任务。
服务器启动servlet后在执行到
//通过对xml文件的解析,初始化JOB
JobSchedulingDataProcessor xmlProcessor = new JobSchedulingDataProcessor();到这里停止,
xmlProcessor.processFileAndScheduleJobs(jobsConfigFile, scheduler, true);

并且tomcat无任何错误提示信息!
有遇到此问题得大哥帮忙解决一下!
...全文
209 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyfalcon 2008-11-25
  • 打赏
  • 举报
回复
我这里出现了比较怪异的情况,调度器正常运行情况下没有任何错误突然中止,之后不再调度任务

有人遇到过这种情况吗?
zydolphin 2008-08-29
  • 打赏
  • 举报
回复
这个问题解决了……
但是scheduler.start();完成后
并没有定时执行excute方法,很是苦恼!
是job配置文件问题吗?
job.xml
<?xml version="1.0" encoding="UTF-8"?>
<quartz xmlns="http://www.opensymphony.com/quartz/JobSchedulingData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
overwrite-existing-jobs="true">

<job>
<job-detail>
<name>quartzExcuteJob</name>
<group>group1</group>
<job-class>jco.QuartzExcuteJob</job-class>
</job-detail>
<trigger>
<cron>
<name>test</name>
<group>group1</group>
<job-name>quartzExcuteJob</job-name>
<job-group>group1</job-group>
<cron-expression>30 10 13 ? * 6</cron-expression>
</cron>
</trigger>
</job>
</quartz>

hxj1225 2008-08-29
  • 打赏
  • 举报
回复
我也刚开始学习Quartz
我是这样写的
QuartzListener.java

package test.quartz.listener;

import java.text.ParseException;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.quartz.SchedulerException;

import test.quartz.TestScheduler;

public class QuartzListener implements ServletContextListener{


public void contextInitialized(ServletContextEvent event) {
event.getServletContext().log("启动Quartz定时器");
try {
TestScheduler.run();
} catch (SchedulerException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
event.getServletContext().log("已经添加调度任务");
}

public void contextDestroyed(ServletContextEvent event) {
try {
TestScheduler.stop();
} catch (SchedulerException e) {
e.printStackTrace();
}
}
}

TestScheduler.java

package test.quartz;

import java.text.ParseException;

import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;

public class TestScheduler {

private static SchedulerFactory schedulerFactory = new StdSchedulerFactory();

private static Scheduler scheduler = null;


public static void run() throws SchedulerException, ParseException{
if(null == scheduler)
//创建调度管理器
scheduler = schedulerFactory.getScheduler();

JobDetail jobDetail = new JobDetail("myjob", //name
Scheduler.DEFAULT_GROUP,//group
SimpleQuartzJob.class
);
//创建触发器
CronTrigger cronTrigger = new CronTrigger("mytrigger", "test","0/5 * * * * ?");
//添加到调度任务
scheduler.scheduleJob(jobDetail, cronTrigger);
//执行调度任务
scheduler.start();
}

public static void stop() throws SchedulerException{
scheduler.shutdown();
}
}


web.xml

<listener>
<listener-class>test.quartz.listener.QuartzListener</listener-class>
</listener>

可能会需要到commons-collections-3.x.jar
2.x的版本不行
zydolphin 2008-08-29
  • 打赏
  • 举报
回复
好郁闷,测试时候我调整了系统时间……
导致不能实现定时器功能!

67,538

社区成员

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

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