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