【发布时间】:2013-12-13 11:24:09
【问题描述】:
我想使用 CXF 或 jersey 创建一个 REST Web 服务来调用 Spring 批处理作业。可能吗。如果是这样,我该怎么做?
【问题讨论】:
-
这里不是要代码的地方!尝试自己,如果您在发布问题时遇到问题,我们将很乐意为您提供帮助!
我想使用 CXF 或 jersey 创建一个 REST Web 服务来调用 Spring 批处理作业。可能吗。如果是这样,我该怎么做?
【问题讨论】:
您可以从您的其他 Put/Post 方法启动 spring 批处理。由于 CXF 使用 spring,因此使用 cxf 使用 spring 批处理更简单
@Autowired
private JobLauncher jobLauncher;
@Autowired
private Job job;
public boolean startJob()
throws Exception {
try {
final JobParameters jobParameters = new JobParametersBuilder().addLong("time", System.nanoTime()).toJobParameters();
final JobExecution execution = jobLauncher.run(job, jobParameters);
final ExitStatus status = execution.getExitStatus();
if (ExitStatus.COMPLETED.getExitCode().equals(status.getExitCode())) {
result = true;
}
}
} catch (JobExecutionAlreadyRunningException ex) {
} catch (JobRestartException ex) {
} catch (JobInstanceAlreadyCompleteException ex) {
} catch (JobParametersInvalidException ex) {
}catch (IOException ex) {
}
return false;
}
【讨论】:
JobLauncher.run()启动一个同步线程时才有效(来自JobLauncher.run() javadoc:JobExecution如果它同步返回。如果实现是异步的,状态很可能是未知。)