BatchEE getRunningExecutions方法在第二次执行后抛出javax.batch.operations.NoSuchJobException

时间:2016-08-18 08:24:12

标签: java-ee batch-processing jsr352

我尝试在执行Java-EE批处理执行时获取正在运行的执行。 通过BatchRuntime.getJobOperator()。start(JOBNAME,parameters)首次执行时,一切正常:

BatchRuntime.getJobOperator().getRunningExecutions(JOBNAME)提供正确的执行和 BatchRuntime.getJobOperator().getJobInstanceCount(JOBNAME)会产生“1”。

批处理执行完成(使用BatchStatus.COMPLETED.toString())。 在所有连续运行期间发生以下情况:

BatchRuntime.getJobOperator().getJobInstanceCount(JOBNAME) - 结果增加,因此变为2,3,....

BatchRuntime.getJobOperator().getRunningExecutions(JOBNAME)抛出:

javax.batch.operations.NoSuchJobException: Job Name TestBatchProcessing not found
at org.apache.batchee.container.impl.JobOperatorImpl.getRunningExecutions(JobOperatorImpl.java:314)
at ....BusinessLogic.process(BusinessLogic.java:51)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.batchee.container.proxy.BatchProxyInvocationHandler.invoke(BatchProxyInvocationHandler.java:55)
at com.sun.proxy.$Proxy125.process(Unknown Source)
at org.apache.batchee.container.impl.controller.batchlet.BatchletStepController.invokeBatchlet(BatchletStepController.java:58)
at org.apache.batchee.container.impl.controller.batchlet.BatchletStepController.invokeCoreStep(BatchletStepController.java:86)
at org.apache.batchee.container.impl.controller.BaseStepController.execute(BaseStepController.java:152)
at org.apache.batchee.container.impl.controller.ExecutionTransitioner.doExecutionLoop(ExecutionTransitioner.java:106)
at org.apache.batchee.container.impl.controller.FlowController.execute(FlowController.java:58)
at org.apache.batchee.container.impl.controller.ExecutionTransitioner.doExecutionLoop(ExecutionTransitioner.java:106)
at org.apache.batchee.container.impl.controller.JobThreadRootController.originateExecutionOnThread(JobThreadRootController.java:110)
at org.apache.batchee.container.util.BatchWorkUnit.run(BatchWorkUnit.java:62)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.batchee.container.util.ClassLoaderAwareHandler.invoke(ClassLoaderAwareHandler.java:39)
at com.sun.proxy.$Proxy123.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

以下是应该由getRunningExecutions找到的正在运行的Jobexecution的属性值(但没有):

jobProperties: {createTime=2016-08-18 12:45:05.559}
batchStatus: STARTED
exitStatus: null
jobName: TestBatchProcessing
instanceId: 1
executionId: 1

有谁知道这个例外的原因? 是否有必要清理工作实例? 如果需要,我可以附加具体的代码片段。

提前感谢您的回答。

编辑:getJobInstanceCount不会保持为2.每次新作业开始时它都会增加一个。

0 个答案:

没有答案