Java JSR352:Wildfly9/JBeret-如何调用不包含在同一部署文件级别的批处理作业

Java JSR352:Wildfly9/JBeret-如何调用不包含在同一部署文件级别的批处理作业,java,wildfly,jsr352,java-batch,jberet,Java,Wildfly,Jsr352,Java Batch,Jberet,我有一个包含JAR库的WAR应用程序。JAR库包含批处理作业和批处理工件(META-INF/Batch-jobs/…)。WAR应用程序将这个jar作为一个库包含在内,并定义了一个JAX-RS服务,该服务允许客户端调用批处理作业调用JobOperator接口 当我运行此部署时,JSR352实现(JBeret)不断抱怨在调用JobOperator接口时,任何软件都找不到作业。。。但是,如果批处理作业和批处理工件作为WAR部署的类包含在内,那么一切都会顺利运行 那么,问题出在哪里?经过一番“小”研究,

我有一个包含JAR库的WAR应用程序。JAR库包含批处理作业和批处理工件(
META-INF/Batch-jobs/…
)。WAR应用程序将这个jar作为一个库包含在内,并定义了一个JAX-RS服务,该服务允许客户端调用批处理作业调用
JobOperator
接口

当我运行此部署时,JSR352实现(JBeret)不断抱怨在调用JobOperator接口时,任何软件都找不到作业。。。但是,如果批处理作业和批处理工件作为WAR部署的类包含在内,那么一切都会顺利运行

那么,问题出在哪里?

经过一番“小”研究,我在以下链接中找到了答案(分散):

简单地说,为了使这种部署能够工作,您必须修改调用作业操作员接口的部署,以调用请求的作业(在我的例子中,是WAR文件)。。。这些是修改:

  • META-INF
    文件夹下包括一个“空的”
    批处理作业
    文件夹。(我想空的是可选的,因为我必须在那个文件夹下放一个自述文件,以防止GIT删除这样的文件夹)

  • META-INF/services
    文件夹下定义
    ServiceLoader
    (文件)。此ServiceLoader(文件)必须被调用:
    org.jberet.spi.JobXmlResolver
    ,并应包含以下实现作为内容:
    org.jberet.tools.MetainfBatchJobXmlResolver


  • 仅此而已。

    WildFly问题(与上述问题类似,但不同)已得到修复,应解决您的第1点(必须使用空批处理作业/目录)。

    请随时分享您对JIRA的想法。这方面肯定有改进的余地。