首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ubuntu上的Glassfish JDBC连接池问题

问Ubuntu上的Glassfish JDBC连接池问题
EN

Stack Overflow用户
提问于 2015-08-22 12:19:47
回答 1查看 116关注 0票数 0

在Glassfish4和Ubuntu14.04上部署之后,我面临一个严重的问题。在java中,由于某些原因,我不使用hibernate。作为查询的结果,我正在手动获取结果集,将结果集发送到JSP页面并对其进行迭代。

问题是,我已将最后一个块设置如下:

代码语言:javascript
复制
 finally {
            try {

                if (conn != null) {
                    conn.close();
                }
                if (ctx != null) {
                    ctx.close();
                }
                if (cstatement != null) {
                    cstatement.closeOnCompletion();
                }

            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();

            } catch (NamingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

由于我要通过会话将Resultset发送到JSP页面,所以我将按如下方式关闭JSP页面上的结果:

if(结果集!=null) resultset.close();

现在,问题是,几分钟后,我的应用程序开始出现异常,即使用了最大连接池。

我该怎么做才能避免例外呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-26 02:36:01

当前最终块的问题是:

如果从其中一个close命令引发任何异常,将不会运行以下命令。因为问题似乎是资源泄漏,所以这可能是原因。

如果您在JDK7+下运行且资源是自动关闭的,请尝试使用

代码语言:javascript
复制
try(Connection conn=DriverManager.getConnection();
  Statement stat=conn.createStatement){
}

然后,资源将被关闭,安全退出试块。

如果您需要关闭“最后块”中的资源,请尝试为每个close语句包装一个try catch。

若要排序关闭资源,请始终关闭稍后创建的资源。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32156035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档