Java 远程数据库连接已打开很长时间

Java 远程数据库连接已打开很长时间,java,database,sql-server-2008,connection,database-connection,Java,Database,Sql Server 2008,Connection,Database Connection,我正在通过远程连接在mssql server 2008数据库上执行一些crud。我用Java编写了业务逻辑,在finally块中为连接、语句和结果集close()编写了严密的代码。 我的疑问是,即使我完成了这项工作,连接端口仍处于打开状态,关闭所有连接大约需要20分钟。我可以使用netstat-a命令查看打开的连接。 我需要快速关闭连接,因为每次操作都会打开/关闭连接数次。因此,我看到大量连接打开。这是非常不安全的,而且长时间保持这么多业务逻辑已经关闭的不需要的连接代价高昂。 我正在使用最新的j

我正在通过远程连接在mssql server 2008数据库上执行一些crud。我用Java编写了业务逻辑,在finally块中为连接、语句和结果集close()编写了严密的代码。
我的疑问是,即使我完成了这项工作,连接端口仍处于打开状态,关闭所有连接大约需要20分钟。我可以使用netstat-a命令查看打开的连接。
我需要快速关闭连接,因为每次操作都会打开/关闭连接数次。因此,我看到大量连接打开。这是非常不安全的,而且长时间保持这么多业务逻辑已经关闭的不需要的连接代价高昂。 我正在使用最新的jtds.jar文件。如有任何提示或建议,将不胜感激。
谢谢,
阿克什

Connection conn = null;
PreparedStatement ps = null;

ResultSet rs = null;

try {
    // Do stuff
    ...

} catch (SQLException ex) {
    // Exception handling stuff
    ...
} finally {
    if (rs != null) {
        try {
            rs.close();
        } catch (SQLException e) { /* ignored */}
    }
    if (ps != null) {
        try {
            ps.close();
        } catch (SQLException e) { /* ignored */}
    }
    if (conn != null) {
        try {
            conn.close();
        } catch (SQLException e) { /* ignored */}
    }
}

抱歉各位,谢谢你们抽出时间回答我的问题。
连接关闭是一个框架调用,未正确关闭。我没有访问它,所以我认为这不是问题所在。再次感谢您的时间和指导。

发布数据库操作代码。代码比几句话更能帮助你。正如我上面所说的,它与代码无关。我看到连接conn、stmt和resultset在调试模式下明显关闭。要么是垃圾收集器问题,这很少见,因为它需要10-20分钟。可能是一些数据库系统设置问题。您使用netstat-a看到的连接是否处于等待时间状态?数据库无法控制应用程序创建的连接。它可以关闭一个已有的连接,但如果应用程序想关闭连接,它就不能激活连接。@Santosh是的,有些处于“等待时间”,有些处于“已建立”。具有等待时间的连接需要更长的时间才能终止。(可能是因为他们正在池中等待连接?)