【发布时间】:2012-07-15 12:14:03
【问题描述】:
我正在测试 Quartz 以安排工作。但是该作业包含 3 个不可序列化的参数。
我在下面创建了一个示例应用程序,说明我是如何实现该功能的。有谁知道如何使用 Quartz 将自定义对象用作参数?
下面是安排工作的触发器,我已经评论了给我带来问题的区域。
public class Trigger {
public void run() throws Exception {
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
Date startTime = DateBuilder.nextGivenSecondDate(null, 15);
JobDetail job = newJob(SimpleJob.class)
.withIdentity("job6", "group1")
.build();
SimpleTrigger trigger = newTrigger()
.withIdentity("trigger6", "group1")
.startAt(startTime)
.withSchedule(simpleSchedule()
.withIntervalInSeconds(60)
.repeatForever())
.build();
Date ft = sched.scheduleJob(job, trigger);
TestObject testObject = new TestObject();
// This is the part giving trouble!
job.getJobDataMap().put(SimpleJob.test,testObject);
sched.start();
}
}
这是我要安排的工作。
public class SimpleJob implements Job {
public static final TestObject test = null;
public SimpleJob() {
}
public void execute(JobExecutionContext context) throws JobExecutionException {
test.saySomething();
}
}
最后是 TestObject 类。
public class TestObject {
public TestObject() {
}
public void saySomething() {
System.out.println("Test Object initialized");
}
}
请注意,我只是在寻找一种方法让 Quartz 允许将不可序列化的对象用作参数(请不要评论上面正在执行的实际任务或工作)
我也尝试过为 TestObject 实现 Serializable 接口,但没有任何乐趣。
任何帮助将不胜感激。 谢谢你。
【问题讨论】:
-
您是否考虑过使用 Guice 进行依赖注入? markalcalaramos.blogspot.com/2009/11/… -- 99soft.github.com/guartz
-
您好!谢谢你的评论!我已经决定使用标准的 java 计时器,似乎已经很好地完成了工作!
标签: java scheduled-tasks quartz-scheduler job-scheduling