有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我的应用程序在数据库关闭时被阻塞

我使用Hibernate和Tomcat JDBC连接池来使用MySQL数据库
无论什么原因,当数据库关闭时,我的应用程序就卡住了
例如,我有REST资源(使用Jersey),他们没有收到任何请求
我还使用quartz来安排任务,但它们并没有很好地运行
当我再次启动数据库时,一切都恢复正常
我甚至不知道从哪里开始找,有人有主意吗
谢谢


共 (2) 个答案

  1. # 1 楼答案

    必须发生的是,您的应用程序必须接收到请求,但在建立数据库连接时必须存在一些异常。查看日志

    在不执行任何数据库操作的地方尝试一些流。它一定很好用

  2. # 2 楼答案

    当应用程序挂起时,获取JVM的线程转储,这将告诉您每个线程的状态,而不是猜测原因,您将获得具体的证据

    话虽如此,使用猜测工作方法,很大程度上取决于连接池的配置以及代码在接收到SQLException时所采取的操作。如果应用程序完全挂起,那么我的第一个调用端口将是找出db访问线程是否处于等待状态,甚至是死锁状态。线程转储将帮助您确定情况是否如此

    有关如何进行线程转储,请参见kill -3 to get java thread dump