2014-07-16 84 views
0

JavaEE 7 appservers支持實施JSR 352(Glassfish和Wildfly do)的批處理操作。從cron觸發Java EE批處理

從Unix cron啓動批處理操作的好方法是什麼?

  • EXEC的wget /捲曲啓動該批次
  • EXEC的java經由JMX調用應用程序服務器(慢的java開始,是否有下的JMX?)
  • 休息的servlet ??
+0

問題是關於從應用程序服務器外部觸發批處理作業,而不是關於JEE調度服務。 許多IT運營商希望通過企業調度系統(如cron或uc4)啓動批處理作業。 有人甚至可能試圖從詹金斯觸發。 – weberjn

回答

0

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

更多信息:

+1

謝謝,但這是從應用服務器內部開始的。我正在尋找從應用程序服務器外部觸發批處理啓動的最佳方法,即從cron中觸發的shell腳本。 – weberjn

+0

如果您不滿足於從應用程序服務器內部入手,那麼您可能超出了規範的範圍和實現特定的解決方案。你使用哪個應用程序服務器和/或批處理實現? (我知道這是一個非常晚的答覆,但可能還有一些價值)。 –

2

安排一個Java EE 7批處理作業可以在幾個方面進行:

  • 我們荷蘭國際集團支持類似cron語法
  • 使用ManagedScheduledExecutorService

更多細節在@Schedule註釋:

http://blog.arungupta.me/2014/07/schedule-javaee7-batch-jobs-techtip36/

如果你想使用curl調用,然後就可以把代碼中的一個REST端點使用@GET註釋。添加一個命令來在crontab中調用此端點。