java - 关闭挂钩代码未完全执行
问题描述
我有一个 Spring 批处理应用程序,在关闭挂钩中我添加了一些代码和平,检查是否有任何批处理处于运行状态,如果是运行状态,则优雅地关闭它,它也包括 DB 调用,但问题是和平的代码没有完全执行。
有时它卡在 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(*) from BATCH_JOB_INSTANCE where JOB_NAME = ?]
但在那之后就什么都没有了。
解决方案
推荐阅读
- g++ - 百胜安装问题
- react-native-ios - 用于 iOS fbsdk 的 React Native 登录按钮
- jenkins - jenkins 管道在 sh 后退出
- python - Selenium chrome webdriver无法在python中定位元素
- visual-studio-code - 即使打开不同文件夹中的文件,VSCode 是否可以始终打开默认文件夹(用于 Ctrl + P 搜索)?
- react-native - FlatList 不会向下滚动到最后
- javascript - 来自正则表达式的 exec 返回 null
- java - 上面许多目录中的 Java 源代码
- html - 将 IMG 元素用于标题徽标或背景图像是否更好,为什么?
- sql - bash 中的简单 sql 脚本失败