我正在使用数据源对象从连接池获取 Oracle JDBC 连接。并使用连接将一些日志从java(通过java静态方法)插入数据库。由于每个用户大约有 10 到 20 个插入,我正在做的是,我在过滤器中的请求级别提交连接并在会话级别关闭连接(通过会话侦听器的 sessionDestroyed() 方法)我没有收到任何错误在测试但在生产环境中,我得到的错误很少,如下所示,
java.sql.SQLException: execute, Exception = null (one scenario)
java.sql.SQLException: close, Exception = null (for another scenario)
如何避免这些错误?我可以改为在 java 静态方法中提交并关闭连接,而不是在请求级别提交并在会话级别关闭吗?
但是让我感到有趣的是,尽管在我的 java 静态方法中有以下逻辑,这些错误还是会发生,
if (con.isClosed() || con == null) {
DBConnectionHelper connHelper = DBConnectionHelper.createInstance();
con=connHelper.getConnection("ds");
con.setAutoCommit(false);
}
所以我正在检查上述内容,因此当我尝试执行时无法关闭连接,对吗?但不确定和困惑它为什么会发生。