我有一个Spring批处理应用程序,并且在关闭钩子中我添加了一些代码,它检查是否有任何批处理器处于运行状态,如果是运行状态,则关闭它优雅地包括数据库调用,但是问题是代码的和平没有完全执行。
有时候它被卡住了 log.info(" ************ explorer.getJobInstanceCount(job.getName())" + explorer.getJobInstanceCount(job.getName()));
有时在List jobInstances = explorer.findJobInstancesByJobName(job.getName(),0,explorer.getJobInstanceCount(job.getName()));
explorer.getJobInstanceCount和explorer.findJobInstancesByJobName方法正在进行数据库调用以从批处理元数据表中获取详细信息。
我在UNIX机器上运行它,环境是Dev。这不是完整的代码,我必须在此之后做其他的事情,但我无法继续,因为我无法掌握当前正在运行的工作,如果有的话。
在日志中可以看到
[Thread-3] JdbcTemplate - 执行准备好的SQL查询
[Thread-3] JdbcTemplate - 执行准备好的SQL语句[SELECT COUNT(*)来自BATCH_JOB_INSTANCE JOB_NAME =?]
但之后什么都没有。