首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Guice + Quartz + iBatis

Guice + Quartz + iBatis
EN

Stack Overflow用户
提问于 2010-04-06 18:50:55
回答 2查看 2K关注 0票数 1

我试图将Guice (Java)、Quartz调度程序和iBatis (iBaGuice)连接在一起执行以下操作:

  1. 使用main()启动命令行实用程序-扫描器
  2. 定期扫描目录(作为参数提供)以查找包含格式化输出的文件(XML或YAML)
  3. 当检测到文件时,解析并将结果输出到数据库。

问题:

  1. 我用这个例子连接Guice和Quartz。然而,我忽略了我在评论中要求的一些重要细节,但这篇文章有点过时,所以我在这里引用它:

  1. 如何设置调度程序并不明显。我将在哪里以及如何连接Trigger (我可以使用Trigger#makeMinutelyTrigger)?
  2. 我真的只有一种类型的任务要执行,我知道JobFactory#newJob中的细节来自TriggerFiredBundle参数,但是我如何连接它呢?以及我在哪里/如何创建或连接具体作业?

通过创建和连接ScheduleProvider,我得到了进一步的进展。现在,我一直在讨论如何在下面的代码段中实际安排作业。我的JobFactory#newJob方法从未被调用过

代码语言:javascript
复制
public class CollectorServiceImpl implements CollectorService {
Scheduler scheduler;

/**
 * @throws SchedulerException
 */
@Inject
public CollectorServiceImpl(final SchedulerFactory factory, final GuiceJobFactory jobFactory)
        throws SchedulerException {
    scheduler = factory.getScheduler();
    scheduler.setJobFactory(jobFactory);
}

/**
 * @throws SchedulerException
 * @see teradata.quantum.reporting.collector.service.CollectorService#start()
 */
@Override
public void start() throws SchedulerException {
    Trigger trigger = TriggerUtils.makeMinutelyTrigger("MIN_TRIGGER");
    scheduler.scheduleJob(trigger); // this fails trigger validation since no job name is provided
    scheduler.start();
}

}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-07 19:56:02

你问题的核心是,你实际上并没有安排一个工作岗位:

代码语言:javascript
复制
getScheduler().scheduleJob(new JobDetail("myFooJob", null, FooJob.class),
        TriggerUtils.makeMinutelyTrigger("MIN_TRIGGER"));

http://www.codesmell.org/blog/2009/01/quartz-fits/上的完整答案和演示代码

票数 2
EN

Stack Overflow用户

发布于 2010-04-06 19:19:28

您真的需要调度,还是只需要在固定的时间间隔内执行重复的任务?如果是后者,请看一下ExecutorService中的java构建,特别是ScheduledThreadPoolExecutor。为一些非常简单的事情节省了一个完整的框架:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2587437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档