当前位置: 首页 > 知识库问答 >
问题:

从Spring Boot阻止数据库关闭命令

白星腾
2023-03-14

重新启动或停止Spring Boot应用程序时的HSQLDB服务器日志

[Server@4f023edb]: Initiating shutdown sequence...
[Server@4f023edb]: Shutdown sequence completed in 101 ms.
[Server@4f023edb]: 2017-05-05 21:47:01.878 SHUTDOWN : System.exit() is called next 

这当然是非常烦人的,因为每次重新部署应用程序时,我都要经历手动调出HSQLDB的麻烦。我如何防止这种情况发生,或者解释一下实际发生的事情。

这似乎只有在Intellij IDEA中运行Spring Boot应用程序时才会发生,如果我从终端窗口启动Spring Boot application-jar并发出shutdownCtrl+C,那么HSQLDB不会受到影响。

共有1个答案

廉博赡
2023-03-14

我之所以只在Intellij IDEA中运行时遇到这个问题,是因为spring-boot-devtools(项目中包含的maven依赖项)没有打包在我从终端窗口运行的application-jar中。

当运行完全打包的应用程序时,会自动禁用开发人员工具。如果您的应用程序是使用java-jar启动的,或者是使用特殊的类加载器启动的,那么它就被认为是“生产应用程序”。将依赖项标记为可选是一种最佳实践,可以防止devtools使用您的项目传递应用到其他模块。Gradle不支持开箱即用的可选依赖项,因此您可能想同时看看propdeps-plugin。

从Intellij IDEA中运行应用程序时,spring-boot-devtools是活动的,并提供了一个shutdown挂钩,该挂钩将尝试优雅地关闭数据库资源(除其他外)。

可以通过以下方式禁用shutdown挂钩;

SpringApplication app = new SpringApplication(MyApplication.class);
app.setRegisterShutdownHook(false);  //This disables the shutdown hook
app.run(args);

这个解决方案解决了我的问题。

 类似资料:
  • 问题内容: 已关闭 。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗? 添加详细信息并通过编辑此帖子来澄清问题。 3个月前关闭。 改善这个问题 可以使用Python查询SAP数据库吗? 问题答案: Python SAP RFC模块似乎处于非活动状态- 2年前的最后一次提交(微不足道) -但可以为您提供服务: Pysaprfc是SAP librfc(Windows上为librfc32.

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 3年前关闭。 我已经将数据库从postgresql更改为mysql,但是我不知道如何将数据从一个转移到另一个。 有谁知道任何命令可以将数据库从postgresql复制/迁移到mysql? 问题答案: 几年 前面 对这个问题,并用 pg2mysql 编辑20

  • 问题内容: 我想在finally块中关闭流,但是它抛出一个,因此看来我必须在块中嵌套另一个块才能关闭流。这是正确的方法吗?似乎有点笨拙。 这是代码: 问题答案: 似乎有点笨拙。 它是。至少java7尝试使用资源可以解决该问题。 在java7之前,您可以创建一个吞咽它的函数: 或将try …最终放入try catch中: 它比较冗长,并且finally中的异常会在try中隐藏一个,但从语义上讲它更接

  • 本文向大家介绍Android中阻止AlertDialog关闭实例代码,包括了Android中阻止AlertDialog关闭实例代码的使用技巧和注意事项,需要的朋友参考一下 Android如何关闭AlertDialog.Builder对话框呢?AlertDialog.Builder对话框没有类似finish()或者dismiss()这样的方法。 但是它的父类AlertDialog有dismiss方法

  • 通常情况下,您使用selenium来自动化测试用例,在测试用例运行完毕后,浏览器关闭。 然而,我尝试使用selenium webdriver编写特定任务的脚本,例如登录到特定页面,但浏览器在登录后应保持打开状态。 我开发了门户,这样,如果我早上开始工作,我就不必登录所有的后端,我只需要登录一次我的门户,从那里我就可以触发我需要的一切。 我这样做是为了登录到typo3后端(片段): 您可以看到,我在

  • 我正在使用Knex.js来处理与数据库的连接。我正在尝试防止连接池破坏空闲的连接。 我的配置是这样的 然而,我仍然不断得到 在一段时间不活动后。 据我所知,当足够的时间过去时,应该将连接从池中丢弃。因此,如果连接有一段时间没有使用(这就是我的情况),池中将没有连接,我尝试的第一次调用将失败,并出现给定错误。随后的调用顺利进行(直到新的超时) 我的问题是——如何防止这种情况? 编辑 在我的应用空闲一