【问题标题】:hook that handles Lock wait timeout exceeded处理超过锁定等待超时的钩子
【发布时间】:2012-02-12 20:14:58
【问题描述】:

我正在编写一个 red5 应用程序,它实际上位于 tomcat 服务器上,并使用连接到 mysql 服务器的 spring 框架(事实上它是一个 red5 应用程序并不重要,它是一个 java ee 应用程序。)

我使用 spring 框架连接到我的数据库。

我注意到在某些查询中我收到以下错误消息

超过锁定等待超时;尝试重启事务

我已经将服务器上的锁定超时配置为 10 秒,所以它必须是我的服务器中的某些内容。每当发生这种情况时,我都想调试 mysql 服务器。也许运行show processlist 并获取输出或抛出正确的错误消息。

有没有办法将某种钩子连接到我在 spring 框架中使用的 JdbcTemplate 以处理所有锁定超时情况?可能会尝试重试几次,发送消息等等。

所以问题是我不想在我的项目的每个地方检查SQLException 并单独处理它。这是一个大工程,需要很长时间。有没有办法在抛出SQLException 时进行配置?我将能够检查哪种类型并进行处理并允许重试,但要构建一些通用的东西,而不是在每个查询上插入 try catch 和句柄?

【问题讨论】:

标签: java mysql spring deadlock


【解决方案1】:

如果异常一直传播到您的处理程序之外,您可以尝试实现HandlerExceptionResolver 并在捕获到异常时在其中进行一些查询和记录调试数据。

您还可以将JdbcTemplate 子类化,并覆盖所需的方法,用try-catch 包装对super 实现的调用(根据需要重新抛出),然后检查异常并进行处理恢复/调试。

【讨论】:

    猜你喜欢
    • 2016-12-16
    • 2011-01-07
    • 1970-01-01
    • 2019-11-20
    • 2017-02-01
    • 1970-01-01
    • 2011-12-25
    • 2018-03-29
    • 1970-01-01
    相关资源
    最近更新 更多