【问题标题】:Is Java Batch (JSR 352) part of the SE JDK ? (BatchRuntime returns NULL for Joboperator)Java Batch (JSR 352) 是 SE JDK 的一部分吗? (BatchRuntime 为 Joboperator 返回 NULL)
【发布时间】:2018-02-24 10:46:11
【问题描述】:

我使用 JavaSE 的 JSR352 实现编写了一个 Java 批处理应用程序。我有一个 Reader、Processor 和 Writer。

由于我在 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 接口的任何实现吗?

【问题讨论】:

    标签: java jsr352


    【解决方案1】:

    javax.batch.* API 虽然是 EE 7 平台的一部分,但设计为可在 SE 中使用(它们本身并不需要完整的 EE 平台)。但是,它们没有被指定为 SE 平台的一部分,因此它们不会成为 JDK 的一部分。您需要使用 Java Batch 实现,例如 SpringBatchReference Implementation

    【讨论】:

    • 这个 java 批处理作业最终将部署到 Websphere,但是,在开发过程中和某些条件下,我希望能够作为 java 控制台应用程序运行,而不必部署到 JEE 容器和通过 REST 接口触发它。
    • >你需要使用 Java Batch 实现
    • 我的项目类路径中已经有了 javaee-api-7.0.jar。我认为这应该足够了。
    • 如果您计划以 WebSphere Liberty 为目标,那么我会考虑在最小的 Liberty 服务器中运行该作业的方法。您可以通过启动 bean 在服务器启动时自动运行作业。 Liberty 可以在几秒钟内启动,因此不会像“服务器”那样增加很多开销。另一个不错的选择是 WebSphere Development Tools Batch(基于 Eclipse)工具。尽管如此,每种方法都有利有弊。如果您有兴趣,我们很乐意进行更多讨论,但我认为我们应该把这个问题抛在脑后,使用一个新的、不同的问题。
    • 让我结束这一点,请注意,在撰写本文时(2017 年 9 月),Liberty 可以免费进行开发。见developer.ibm.com/wasdev/docs/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 2021-05-31
    • 1970-01-01
    • 2014-11-14
    • 2014-12-01
    • 1970-01-01
    相关资源
    最近更新 更多