Java批处理(JSR352)是SE JDK的一部分吗?(对于Joboperator,BatchRuntime返回NULL)

Java批处理(JSR352)是SE JDK的一部分吗?(对于Joboperator,BatchRuntime返回NULL),java,jsr352,Java,Jsr352,我已经使用JavaSE中的JSR352实现编写了一个Java批处理应用程序。我有一个阅读器、处理器和书写器 因为我在JavaSE环境中从控制台运行这个java应用程序,所以我在main(String[]args)方法中使用以下代码来启动作业 final JobOperator jobOperator = BatchRuntime.getJobOperator(); jobOperator.start("Job.xml", null); 但是,getJobOperator()返回NULL并获得以

我已经使用JavaSE中的JSR352实现编写了一个Java批处理应用程序。我有一个阅读器、处理器和书写器

因为我在JavaSE环境中从控制台运行这个java应用程序,所以我在
main(String[]args)
方法中使用以下代码来启动作业

final JobOperator jobOperator = BatchRuntime.getJobOperator();
jobOperator.start("Job.xml", null);
但是,getJobOperator()返回NULL并获得以下错误消息

警告:ServiceLoader无法使用javax.batch.runtime.BatchRuntime 找到JobOperator的实现。检查类路径是否存在错误 META-INF/services/javax.batch.operations.JobOperator文件


我应该编写JobOperator接口的任何实现吗

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

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

这个java批处理作业最终将部署到Websphere,但是,在开发期间和某些情况下,我希望能够作为java控制台应用程序运行,而不必部署到JEE容器并通过REST接口触发它。>您需要使用java批处理实现<抱歉,我没有完全理解。这是否意味着,在javax.batch api之上,我需要使用SpringBatch或导入参考实现项目(将有JobOperator实现)的jar?我的项目类路径中已经有了javaee-api-7.0.jar。我认为这应该足够了。如果您计划以WebSphereLiberty为目标,那么我将考虑在最小Liberty服务器中运行作业的方法。您可以通过启动bean在服务器上自动运行作业。Liberty可以在几秒钟内启动,所以它不像“服务器”那样会增加很多开销。另一个不错的选择是WebSphere开发工具批处理(基于Eclipse)工具。不过,每种方法都有利弊。如果你有兴趣,我很乐意讨论更多,但我认为我们应该把这个问题抛在脑后,用一个新的、不同的问题来回答。最后,让我指出,在撰写本文时(2017年9月),自由是自由发展的。请看,这个java批处理作业最终将部署到Websphere,但是,在开发期间和某些情况下,我希望能够作为java控制台应用程序运行,而不是必须部署到JEE容器并通过REST接口触发它。>您需要使用java批处理实现<抱歉,我没有完全理解。这是否意味着,在javax.batch api之上,我需要使用SpringBatch或导入参考实现项目(将有JobOperator实现)的jar?我的项目类路径中已经有了javaee-api-7.0.jar。我认为这应该足够了。如果您计划以WebSphereLiberty为目标,那么我将考虑在最小Liberty服务器中运行作业的方法。您可以通过启动bean在服务器上自动运行作业。Liberty可以在几秒钟内启动,所以它不像“服务器”那样会增加很多开销。另一个不错的选择是WebSphere开发工具批处理(基于Eclipse)工具。不过,每种方法都有利弊。如果你有兴趣,我很乐意讨论更多,但我认为我们应该把这个问题抛在脑后,用一个新的、不同的问题来回答。最后,让我指出,在撰写本文时(2017年9月),自由是自由发展的。看见