2011-12-21 58 views
2

我有一个连接到Sybase数据库的java应用程序。日志数据库连接挂起

我想在应用程序级别挂起挂起的数据库连接。

我不确定这是可能的,如果是这样,请帮我解决这个问题。

+0

你的意思是'数据库连接挂起时记录',或'数据库连接超时记录'? – 2011-12-21 14:46:17

+0

实际上,这是当数据库连接挂起... – Alina 2011-12-21 14:47:10

+0

@Alina你是什么意思挂,给出具体的价值。 – 2011-12-21 17:24:37

回答

1

如果连接实际“挂起”,通常是死锁。数据库是详细诊断和记录这些问题的最佳地点。然而,我知道MS SQL Server驱动程序会在选择死锁受害者之后抛出一个相当特殊的异常,并且从我的Java(更多受限)经验中,我想象Sybase驱动程序也会这样做。您可以从应用程序中捕获该异常。即使这是一个普遍的例外情况,您可能会检查堆栈跟踪或描述,并确定它与锁定问题有关。

This post用Java/Sybase提及LockAcquisitionException

+0

这是一个好主意,它可以解决大部分我相信的问题(因为我知道,因为其他原因(如果有人能纠正我,请这么做)挂起可能会出现)。 LockAcquisitionException实际上是一个Hibernate异常,我们并没有使用Hibernate或任何ORM来连接数据库,只是JDBC和Spring JDBC抽象框架。但是,我可以根据SQLException的代码在应用程序中捕获死锁执行。非常感谢! – Alina 2011-12-22 09:15:15

+0

另一个“挂起”的可能性可能是一个非优化的数据库。 – 2011-12-22 09:36:32