引发异常[com.mysql.jdbc.CommunicationsException:由于基础异常导致通信链接失败:

时间:2015-04-15 04:47:01

标签: java mysql csv jdbc tomcat8

在我的java Web应用程序中,我连接到本地MySQL数据库。使用servlet我将获取csv文件并将数据插入数据库。它连接正常并且正在插入数据,但是在每次从csv文件插入后它开始逐渐减慢。当它到达csv文件中的第159行时,会抛出此异常:

抛出异常

  

[com.mysql.jdbc.CommunicationsException:通讯链接失败   由于潜在的例外:

     

java.net.SocketException异常   消息:权限被拒绝:连接

堆栈跟踪:

  

java.net.SocketException:Permission denied:connect

有谁知道为什么它会正常工作然后放慢速度直到它抛出此异常?我真的对此感到头疼,网上似乎没有任何帮助。顺便说一句,我使用的是tomcat8。

1 个答案:

答案 0 :(得分:1)

正如您已经发现的那样,您获得的异常来自于打开如此多的连接以达到限制的原因。

要正确关闭与db的连接,基本上有三个步骤。

  1. 关闭ResultSet(如果有)
  2. 关闭语句对象
  3. 关闭连接对象
  4. 典型代码如下:

    try {
        //your code that is making and using jdbc is here
    
        //after you finish
        rs.close(); //if a ResultSet was returned
        stmt.close(); //Close Statement
        conn.close(); //Close Connection
    }catch(SQLException se){
    }catch(Exception e){
    }finally{
        //finally block used to close resources if Closing failed above
        try{
           if(stmt!=null)
              stmt.close();
        }catch(SQLException se2){
        }// nothing we can do
        try{
           if(conn!=null)
              conn.close();
        }catch(SQLException se){
           se.printStackTrace();
        }//end finally try
    }//end try
    

    有关完整示例,请参阅this