代码之家  ›  专栏  ›  技术社区  ›  Bostone

Guice+石英+iBatis

  •  1
  • Bostone  · 技术社区  · 16 年前

    我正在尝试将Guice(Java)、Quartz调度器和iBatis连接起来( iBaGuice )执行以下操作:

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

    1. 我曾经 this example 用金属丝和石英丝。不过,我在评论中遗漏了一些重要的细节,但这篇文章有些过时,所以我也在这里引用:
    1. 如何设置调度程序并不明显。我要在哪里和如何连接 Trigger (我可以用 Trigger#makeMinutelyTrigger
    2. 我真的只有一种类型的工作,我将执行,我明白,在JobFactory#newJob的细节来自 TriggerFiredBundle

    另外,通过创建和连接ScheduleProvider,我得到了进一步的发展。现在,我被困在如何实际安排工作在下面的片段。我的 JobFactory#newJob 方法从未被调用

    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();
    }
    

    }

    2 回复  |  直到 16 年前
        1
  •  2
  •   Bostone    16 年前

    你的问题的核心是,你实际上并没有安排工作课程:

    getScheduler().scheduleJob(new JobDetail("myFooJob", null, FooJob.class),
            TriggerUtils.makeMinutelyTrigger("MIN_TRIGGER"));
    

    http://www.codesmell.org/blog/2009/01/quartz-fits/

        2
  •  0
  •   momania    16 年前

    你真的需要安排时间,还是只需要按固定的时间间隔执行重复的任务? 如果是后者,请看一下java内置ExecutorService,特别是ScheduledThreadPoolExecutor。将整个框架保存为非常简单的内容:)