从cron触发javaee批处理

从cron触发javaee批处理,java,cron,batch-processing,java-ee-7,Java,Cron,Batch Processing,Java Ee 7,JavaEE7AppServers支持实现JSR352(Glassfish和Wildfly-do)的批处理操作 从Unix cron启动批处理操作的好方法是什么 exec wget/curl启动批处理的rest servlet execjava通过JMX调用appserver(java启动速度慢,是否有JMX用于C?) ? JavaEE7通过注释支持cron作业。您可以使用方法激发批处理工作。以下是一个基本示例: @Singleton @Startup public class CronJob

JavaEE7AppServers支持实现JSR352(Glassfish和Wildfly-do)的批处理操作

从Unix cron启动批处理操作的好方法是什么

  • exec wget/curl启动批处理的rest servlet
  • execjava通过JMX调用appserver(java启动速度慢,是否有JMX用于C?)
  • ?

JavaEE7通过注释支持cron作业。您可以使用方法激发批处理工作。以下是一个基本示例:

@Singleton
@Startup
public class CronJobs {
    @Resource
    TimerService timerService;

    public void setTimer(long intervalDuration) {
        Timer timer = timerService.createTimer(intervalDuration, 
            "Created new programmatic timer");
    }

    @Schedule(second = "0", minute = "0", hour = "*/1")
    public void fireFooBatch() {
        JobOperator jobOperator = BatchRuntime.getJobOperator();
        Properties props = new Properties();
        props.setProperty("someProperty", "someValue");
        long execID = jobOperator.start("yourJob", props);
    }
}
更多信息:


调度Java EE 7批处理作业可以通过以下两种方式完成:

  • 使用支持类似cron语法的@Schedule注释
  • 使用ManagedScheduledExecutorService
详情请浏览:


如果希望使用curl调用,那么可以使用@GET annotation将代码放在REST端点中。在crontab中添加一个命令来调用此端点。

谢谢,但这是从appserver内部开始的。我正在寻找从appserver外部触发批处理启动的最佳方法,即从cron中触发的shell脚本。如果您不满足于从appserver内部启动,则可能超出了规范的范围,并进入了特定于实现的解决方案。您正在使用哪个应用服务器和/或批处理实现?(我知道这是一个非常晚的答复,但可能仍然有一些价值)。问题是从应用服务器外部触发批处理作业,而不是JEE调度服务。许多IT运营部门希望通过企业调度系统(如cron或uc4)启动批处理作业。有人甚至可能试图从詹金斯那里触发。