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



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

当我运行这个部署时,JSR352实现(JBeret)一直抱怨在调用JobOperator接口时,在任何软件中都找不到作业。。。然而,如果Batch Job和Batch Artifacts作为WAR部署的类包括在内,那么一切都会顺利运行。。。

那么,问题出在哪里呢?

经过"一点"研究,我在以下链接中找到了答案(分散):

Wildfly问题

邮件列表

简而言之,为了使这种部署发挥作用,您必须修改调用Job Operator接口以调用请求的Job(在我的情况下,它是WAR文件)的部署。。。这些是修改:

  1. META-INF文件夹下包含一个"空"的batch-jobs文件夹。(我想空是可选的,因为我必须在该文件夹下放一个自述文件,以防止GIT删除这样的文件夹)

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

仅此而已。

WildFly问题(https://issues.jboss.org/browse/WFLY-7000,类似于上面提到的,但不同)已经修复,并且应该解决您的点1(必须使用空的批处理作业/目录)。

相关内容

  • 没有找到相关文章

最新更新