如何跟踪异常 JDBC 连接

Posted

技术标签:

【中文标题】如何跟踪异常 JDBC 连接【英文标题】:How trace exception JDBC connection 【发布时间】:2015-11-03 13:55:10 【问题描述】:

我开发了一个 XPages 应用程序,可以访问 Anonymous 来查询实时库存。 一切正常 所以我创建了带有驱动程序JTOpen 的 OSGI 包来访问 DB2 AS400 (iSeries) 数据库 当您打开页面时,一切都很顺利。 当有用户不活动时出现问题(图标化 windows 浏览器并重新打开 xpages)

我使用不同的编辑框、组合框在部分刷新模式下执行 SQL 查询来过滤和搜索 DB2 Iseries。

我的问题是,在几分钟不活动后,我注意到组合框不再起作用,而且似乎 JDBC 连接下降 (我已经为 Ping 激活了 keepalive 功能)

...但我不知道如何调试这个可能的 JDBC 异常。

有人有什么想法吗?

这是我在WebContent-->WEB-INF-->jdbc下的as40.jdbc文件

<jdbc type="simple">
    <driver>com.ibm.as400.access.AS400JDBCDriver</driver>
    <url>jdbc:as400://192.168.X.X;naming=system;errors=full</url>
    <user>user</user>
    <password>pwd</password>

<simple>
    <minPoolSize>10</minPoolSize>
    <maxPoolSize>20</maxPoolSize>
    <maxConnectionSize>200</maxConnectionSize>
    <useTimeout>1</useTimeout>
    <idleTimeout>00</idleTimeout>
    <maxLiveTime>00</maxLiveTime>
    <acquireTimeout>10000</acquireTimeout>
</simple>       
</jdbc>

【问题讨论】:

【参考方案1】:

url中有超时设置可以指定。

jdbc:as400://xxx.com;libraries=libs;sort=hex;socket timeout=30000;thread used=false;translate binary=true;prompt=false;

也许问题出在 XPage 上的代码上?如何将组合框中的值绑定到 jdbc 数据?

霍华德

【讨论】:

组合框只是一个过滤器...执行部分刷新,其中目标是绑定 JDBC 对象的重复控件。【参考方案2】:

我怀疑有useTimeout=1。我相信这将意味着已使用超过 1 秒的连接将被删除。您可以尝试设置useTimeout=0 看看是否有任何不同。

【讨论】:

好的,我试试这个解决方案,然后更新这篇文章。 tnx

以上是关于如何跟踪异常 JDBC 连接的主要内容,如果未能解决你的问题,请参考以下文章

用jdbc远程连接mysql,报异常

java jdbc连接异常问题数据库

求解决java中用jdbc方式连接mysql数据库的问题,错误异常如下:(解决后再加分)

使用 Dataframes 从 Informix 到 Spark 的 JDBC

在 GlassFish v4.1.1 中创建 jdbc 连接池 [重复]

Java servlet (tomcat) 跟踪到多个数据库的多个 jdbc 连接