1

我正通过远程连接在mssql server 2008数据库上执行一些crud。我在Java中使用严格的代码进行连接,语句和结果集close()在finally块中的业务逻辑。
我的疑问是,即使完成作业,连接端口仍处于打开状态,关闭所有连接大概需要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 */} 
    } 
} 
+3

发布数据库操作的代码。代码会帮助你而不是几句话。 – Shiham

+0

正如我上面所说的,它与代码无关。我发现连接conn,stmt和resultset在调试模式下明显关闭。无论是垃圾收集器的问题,这是罕见的,因为它需要10-20分钟。可能是一些数据库系统设置问题。 – AkD

+0

您使用netstat-a看到的连接是否处于WAIT_TIME状态? – Santosh

回答

0

对不起球员,并感谢取出时间来回答我的问题。 连接关闭是一个框架调用,没有正确关闭。我没有访问它,所以我认为这不是问题。再次感谢您的时间和指导。