gpt4 book ai didi

java - jdbc DB2 queryTimeout 未按预期工作

转载 作者:行者123 更新时间:2023-12-01 18:41:05 24 4
gpt4 key购买 nike

我们在 Db2 上面临查询超时属性的问题,当我们在 WebSphere 中运行应用程序时它正在工作,然后我们转移到 Tomcat,这个问题最近被一个很长的查询所困扰,该查询挂起很长时间,直到45 分钟后超时,我们的部分代码如下,自从迁移到 Tomcat 以来它们没有更改:

    CallableStatement cs = statementFactory.createCallableStatement(getConnection(), source.getSQL(),
statementConfig);
cs.setQueryTimeout(10);
boolean resultSetAvailable = cs.execute();
if (resultSetAvailable) {
resultSet = cs.getResultSet();
} else {
resultSet = CallableStatementParamsUtils.checkForOutResultSet(cs, storedProc);
}

  • 我将超时设置为 10 秒,但根本没有超时,有人知道为什么吗?

  • 困难是Db2驱动程序不是开源的,无法调试它,如何使用Db2解决这个问题?

最佳答案

在这种情况下,使用 jdbc 类型 4 驱动程序似乎有助于解决该问题。

请注意,IBM db2 jdbc 驱动程序支持跟踪问题确定,如 here 中所述。 .

在处理 Db2 的 jdbc 问题时,确保您使用的是最新的 jdbc 驱动程序总是有帮助的,可以通过此 page 获取该驱动程序。 .

从评论来看,之前的 jdbc 驱动程序是 type-2 驱动程序(仅在特定配置下支持查询超时,如 Db2 知识中心中的 IBM 文档,注释复制如下)。

关于此的各种 IBM 注释 page关于 jdbc 中的 queryTimeout 支持是必读的,即:

  • For DB2 for i, this method (setQueryTimeout) is supported only for a seconds value of 0.

  • For IBM Data Server Driver for JDBC and SQLJ type 2 connectivity on Db2 for z/OS, Statement.setQueryTimeout is supported only if Connection or DataSource property queryTimeoutInterruptProcessingMode is set to INTERRUPT_PROCESSING_MODE_CLOSE_SOCKET.

  • For IBM Data Server Driver for JDBC and SQLJ type 2 connectivity on Db2 on Linux, UNIX, and Windows systems, Statement.setQueryTimeout is supported only if Connection or DataSource property queryTimeoutInterruptProcessingMode is set to INTERRUPT_PROCESSING_MODE_STATEMENT_CANCEL.

  • For the IBM Data Server Driver for JDBC and SQLJ Version 4.0 and later, Statement.setQueryTimeout is supported for the following methods:

    Statement.execute Statement.executeUpdate Statement.executeQuery

  • Statement.setQueryTimeout is supported for the Statement.executeBatch method only when property queryTimeoutInterruptProcessingMode is set to INTERRUPT_PROCESSING_MODE_CLOSE_SOCKET (2).

关于java - jdbc DB2 queryTimeout 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59931952/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com