JavaEE 7 appservers支持实施JSR 352(Glassfish和Wildfly do)的批处理操作。从cron触发Java EE批处理
从Unix cron启动批处理操作的好方法是什么?
- EXEC的wget /卷曲启动该批次
- EXEC的java经由JMX调用应用程序服务器(慢的java开始,是否有下的JMX?)
- 休息的servlet ??
JavaEE 7 appservers支持实施JSR 352(Glassfish和Wildfly do)的批处理操作。从cron触发Java EE批处理
从Unix cron启动批处理操作的好方法是什么?
Java EE 7支持通过@Schedule
批注的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);
}
}
更多信息:
谢谢,但这是从应用服务器内部开始的。我正在寻找从应用程序服务器外部触发批处理启动的最佳方法,即从cron中触发的shell脚本。 – weberjn
如果您不满足于从应用程序服务器内部入手,那么您可能超出了规范的范围和实现特定的解决方案。你使用哪个应用程序服务器和/或批处理实现? (我知道这是一个非常晚的答复,但可能还有一些价值)。 –
安排一个Java EE 7批处理作业可以在几个方面进行:
更多细节在@Schedule注释:
http://blog.arungupta.me/2014/07/schedule-javaee7-batch-jobs-techtip36/
如果你想使用curl调用,然后就可以把代码中的一个REST端点使用@GET注释。添加一个命令来在crontab中调用此端点。
问题是关于从应用程序服务器外部触发批处理作业,而不是关于JEE调度服务。 许多IT运营商希望通过企业调度系统(如cron或uc4)启动批处理作业。 有人甚至可能试图从詹金斯触发。 – weberjn