java - 使用 Intellij Idea 捕获 Spring-boot 应用程序的外部 jar 停止事件

标签 java spring-boot intellij-idea

为了在生产环境中启动我的 Spring Boot 应用程序,我的公司有一个执行“java -jar”的系统,我试图在我的 Intellij idea 中模拟它,并且 jar 正确启动,我也可以使用项目源进行调试。

在运行和 Debug模式下,当我单击停止按钮时,jar 会突然停止并显示消息:

Disconnected from the target VM, address: '127.0.0.1:58575', transport: 'socket'

Process finished with exit code -1

而且我无法捕获关闭事件来关闭我的数据库连接。我尝试过其他 stackoverflow 解决方案,例如 PortalServiceLifeCycle , @PreDestroysetRegisterShutdownHook(false) in SpringApplication run in main .

Jar 是由 Maven 创建的,具有干净和打包的目标,我们没有 xml spring 配置,只有注释。

我需要什么来捕捉关闭服务来关闭连接?

编辑:添加我的 Intellij 按钮:

enter image description here

谢谢。

最佳答案

check this answer .

此功能是 not available尚未处于 Debug模式。

此功能也不适用于JAR运行配置,但可用于应用程序运行配置。

您可以使用远程调试和外部控制台中的 Ctrl+C 来调试关闭 Hook 中的代码,直到 IDEA-171093已实现。

关于java - 使用 Intellij Idea 捕获 Spring-boot 应用程序的外部 jar 停止事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50619453/

相关文章:

java - 文件是否附加在文件字段中?

java - 如何从可变大小的字符串中获取所需的字符?

java - 如何在 Spring boot 中使用非实时数据源创建 Jar 文件?

java - Spring Boot 禁止属性值

mercurial - 使用 IntelliJ IDEA 和 Mercurial 获取 "Update Project"的简单方法?

java - 如何使用 Maven 存储库中的项目代码

java - 动态获取图像到ImageView

java - Android 自定义 View 不起作用

java - Spring Boot,如何在具有 EmbeddedId 的表中插入新记录

debugging - 从 IntelliJ 调试功能测试