我有一个包含JAR库的WAR应用程序。 JAR库包含批处理作业和批处理工件(META-INF/batch-jobs/...
)。 WAR应用程序将此jar包含为库,并定义了一个JAX-RS服务,允许客户端调用调用JobOperator
接口的批处理作业...
当我运行此部署时,JSR 352实现(JBeret)一直抱怨在调用JobOperator接口时无法找到作业...但是,如果批处理作业和批处理工件包含在WAR部署,一切运行顺利......
那么,问题是什么?
答案 0 :(得分:4)
经过“小”研究后,我在以下链接中找到答案(分散):
简而言之,为了使这种部署工作,你必须修改调用Job Operator接口的部署来调用所请求的Job(在我的例子中,它是WAR文件)......这些是修改:
在batch-jobs
文件夹下包含“空”META-INF
文件夹。 (我想空是可选的,因为我必须在该文件夹下放置一个README文件以防止GIT删除这样的文件夹)
在ServiceLoader
文件夹下定义META-INF/services
(文件)。必须调用此ServiceLoader(文件):org.jberet.spi.JobXmlResolver
并且应包含以下实现作为内容:org.jberet.tools.MetaInfBatchJobsJobXmlResolver
就是这样。
答案 1 :(得分:0)
WildFly问题(https://issues.jboss.org/browse/WFLY-7000,类似于上面提到的问题,但是是另一个问题)已经修复,应该解决你的问题1(必须使用空的batch-jobs /目录)。