gpt4 book ai didi

java - 在连接池中获取 SQLException 错误

转载 作者:行者123 更新时间:2023-12-02 07:47:43 25 4
gpt4 key购买 nike

我正在使用数据源对象从连接池获取 Oracle JDBC 连接。并使用连接将一些日志从java插入数据库(通过java静态方法)。由于每个用户大约有 10 到 20 次插入,所以我正在做的是,我在 Filter 中提交请求级别的连接,并在 session 级别关闭连接(通过 session 监听器的 sessionDestroyed() 方法)我在测试中没有收到任何错误,但在生产环境中,我收到了一些错误,如下所示,

java.sql.SQLException: execute, Exception = null (one scenario)
java.sql.SQLException: close, Exception = null (for another scenario)

如何避免这些错误?我可以在 java 静态方法中提交并关闭连接,而不是在请求级别提交并在 session 级别关闭吗?

但有趣的是,尽管我的 java 静态方法中有以下逻辑,但这些错误仍然发生,

if (con.isClosed() || con == null) {
DBConnectionHelper connHelper = DBConnectionHelper.createInstance();
con=connHelper.getConnection("ds");
con.setAutoCommit(false);
}

所以我正在检查上述内容,因此当我尝试执行时无法关闭连接,对吗?但不确定和困惑为什么会发生。

最佳答案

我猜你的 con 对象是空的?

考虑以下 block :

if (con.isClosed() || con == null) {
DBConnectionHelper connHelper = DBConnectionHelper.createInstance();
con=connHelper.getConnection("ds");
con.setAutoCommit(false);
}

首先询问连接是否已关闭。然后你看看它是否为空。如果 con 确实为 null,您将得到一个 NullpointerException。

切换检查,看看是否有帮助:-)

if (con == null || con.isClosed()) {
DBConnectionHelper connHelper = DBConnectionHelper.createInstance();
con=connHelper.getConnection("ds");
con.setAutoCommit(false);
}

关于java - 在连接池中获取 SQLException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10600855/

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