-2

我正在使用 Hibernate 和 Tomcat JDBC 连接池来使用我的 MySQL 数据库。
当由于某种原因数据库关闭时,我的应用程序就卡住了。
例如,我有 REST 资源(使用 Jersey),他们没有收到任何请求。
我也使用石英来安排任务,它们也没有运行。
当我再次启动我的数据库时,一切都恢复正常。
我什至不知道从哪里开始寻找,有人有想法吗?
谢谢

4

2 回答 2

0

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

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

有关如何进行线程转储的信息,请参见kill -3 以获取 java 线程转储

于 2013-08-15T12:22:47.947 回答
0

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

尝试一些您没有进行任何数据库操作的流程。它必须工作正常。

于 2013-08-15T12:07:39.243 回答