日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java与java ee_计划Java EE 7批处理作业

發布時間:2023/12/3 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java与java ee_计划Java EE 7批处理作业 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java與java ee

Java EE 7添加了使用JSR 352以標準方式執行批處理作業的功能。

<job id="myJob" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0"><step id="myStep"><chunk item-count="3"><reader ref="myItemReader"/><processor ref="myItemProcessor"/><writer ref="myItemWriter"/> </chunk>

該代碼片段是定義為XML(也稱為Job XML)的Job Specification Language。 它使用面向項目或面向塊的處理,一步一步定義了規范的工作。 塊可以具有讀取器,可選處理器和寫入器。 這些元素中的每一個都使用Job XML中的相應元素進行標識,并且是打包在歸檔文件中的CDI bean。

可以使用以下命令輕松開始此工作:

BatchRuntime.getJobOperator().start("myJob", new Properties());

在不同的論壇和會議上提出的一個典型問題是如何在Java EE運行時中安排這些作業。 Batch 1.0 API本身不提供任何可安排這些作業的內容。 但是,Java EE平臺提供了三種不同的方式來調度這些作業:

  • 在EJB中使用@javax.ejb.Schedule批注。 這是一個示例代碼,它將在每天的11:59:59 PM觸發批處理作業的執行。 @Singleton public class MyEJB {@Schedule(hour = "23", minute = "59", second = "59")public void myJob() {BatchRuntime.getJobOperator().start("myJob", new Properties());} }

    當然,您可以更改@Schedule的參數以在所需時間啟動批處理作業。

  • 如下所示,通過javax.enterprise.concurrent.Trigger使用ManagedScheduledExecutorService : @Stateless public class MyStatelessEJB {@ResourceManagedScheduledExecutorService executor;public void runJob() {executor.schedule(new MyJob(), new Trigger() {public Date getNextRunTime(LastExecution lastExecutionInfo, Date taskScheduledTime) {Calendar cal = Calendar.getInstance();cal.setTime(taskScheduledTime);cal.add(Calendar.DATE, 1);return cal.getTime();}public boolean skipRun(LastExecution lastExecutionInfo, Date scheduledRunTime) {return null == lastExecutionInfo;}});}public void cancelJob() {executor.shutdown();} }

    呼叫runJob啟動執行作業程序和cancelJob終止作業執行。 在這種情況下,新作業比上一個任務晚一天開始。 直到上一個被終止,它才開始。 您將需要更多錯誤檢查才能正確執行。

    MyJob非常瑣碎:

    public class MyJob implements Runnable {public void run() {BatchRuntime.getJobOperator().start("myJob", new Properties());}}

    當然,您可以通過在@PostConstruct調用此代碼來自動調度它。

  • 第二種技術的微小變化允許在固定的延遲后運行作業,如下所示: public void runJob2() {executor.scheduleWithFixedDelay(new MyJob(), 2, 3, TimeUnit.HOURS); }

    在調用runJob2方法2小時后執行第一個任務。 然后在后續執行之間要延遲3個小時。

  • 您可以在Java EE平臺中使用此支持。 另外,您還可以調用BatchRuntime.getJobOperator().start("myJob", new Properties()); 也可以使用任何Quartz計劃的方法。

    • 您可以在WildFly上嘗試所有這些方法 。
    • github.com/javaee-samples/javaee7-samples上有大量的Java EE 7示例。
    • 該特定示例可在github.com/javaee-samples/javaee7-samples/tree/master/batch/scheduling中找到 。

    您如何安排批處理作業?

    翻譯自: https://www.javacodegeeks.com/2014/09/schedule-java-ee-7-batch-jobs.html

    java與java ee

    總結

    以上是生活随笔為你收集整理的java与java ee_计划Java EE 7批处理作业的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。