【问题标题】:JSR 352: Wildfly9 / JBeret - How to call a batch job that it is not contained at the same deployment file levelJSR 352:Wildfly9 / JBeret - 如何调用不包含在同一部署文件级别的批处理作业
【发布时间】:2015-11-19 21:21:09
【问题描述】:

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

当我运行此部署时,JSR 352 实现 (JBeret) 一直抱怨在调用 JobOperator 接口时无法找到作业...但是,如果批处理作业和批处理工件作为类包含WAR部署,一切顺利……

那么,问题出在哪里?

【问题讨论】:

    标签: java wildfly jsr352 java-batch jberet


    【解决方案1】:

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

    Wildfly Issues

    Mailing list

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

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

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

    就是这样。

    【讨论】:

    • 欢迎分享您对 JIRA 的看法。这方面肯定有改进的余地。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-15
      • 1970-01-01
      • 1970-01-01
      • 2017-01-22
      相关资源
      最近更新 更多