2017-09-15 63 views
0

我已經使用JavaSE的JSR352實現編寫了一個Java批處理應用程序。我有一個Reader,Processor和Writer。SE JDK是Java Batch(JSR 352)的一部分嗎? (BatchRuntime爲Joboperator返回NULL)

由於我正在JavaSE環境中從控制檯運行此Java應用程序,因此我在我的main(String[] args)方法中使用以下代碼來啓動作業。

final JobOperator jobOperator = BatchRuntime.getJobOperator(); 
jobOperator.start("Job.xml", null); 

但是,在getJobOperator()返回NULL,並得到以下錯誤消息

警告:javax.batch.runtime.BatchRuntime的的ServiceLoader無法 找到JobOperator的實行。檢查類路徑爲 META-INF/services/javax.batch.operations.JobOperator文件。

我應該寫任何JobOperator接口的實現嗎?

回答

1

javax.batch.* API雖然是EE 7平臺的一部分,但它被設計爲可在SE中使用(它們本質上不需要完整的EE平臺)。但是,它們並未被指定爲SE平臺的一部分,因此它們不會成爲JDK的一部分。您需要使用Java Batch實現,例如SpringBatchReference Implementation

+0

這個Java批處理作業最終將被部署到Websphere,但是在開發和特定條件下,我希望能夠作爲Java控制檯應用程序運行,而不必部署到JEE容器並通過REST接口觸發它。 – yathirigan

+0

>您需要使用Java Batch實現<對不起,我沒有完全理解。這是否意味着,在javax.batch API之上,我需要使用SpringBatch或導入參考實現項目的jar(它將具有JobOperator實現)? – yathirigan

+0

我已經在我的項目類路徑中擁有了javaee-api-7.0.jar。我認爲這應該足夠。 – yathirigan