zoukankan      html  css  js  c++  java
  • JAVA:当数据库重启后连接池没有自动识别的解决办法

    今天发现服务器上的一个服务程序出现问题,软件抛出:Connection reset by peer: socket write error

    无法正常提供服务,找了一下原因,原来是因为数据库服务器重启,连接池里的数据库连接connection无法创建新的Statement,导致无法提供正常服务。

    到百度搜索了一下,看到一篇文章与我遇到的问题类似,解决办法虽然看上去不是很好的办法,但也实用:

    解决思路:在使用前创建一个Statement,如果抛出异常,说明connection已断开,重新连接。

    if (conn == null || conn.isClosed()) 
    {
        conn=addConnetion()
    }
    else
    {
        Statement st= null;
        ResultSet rs=null;
        try 
        {
            st= conn.createStatement(); //到这一步还不能确定
            rs=st.executeQuery("select 0"); //到这一步才能确定
        } 
        catch (SQLException e) 
        {
            conn=addConnetion();
        } 
        finally 
        {
            try 
            {
    
                if(rs!=null)
                {
                    rs.close();
                    rs=null;
                }
    
                if (st != null) 
                {
                    st.close();
                    st=null;
                }
            } 
            catch (SQLException e) 
            {
                e.printStackTrace();
            }
        }
    }

    2008-11-26

  • 相关阅读:
    iOS8 定位补充
    iOS系统导航/自绘制导航路线
    自定义大头针
    添加大头针
    iOS 地图
    iOS 定位
    UISearchBar
    NSPredicate谓词
    iOS的设备及分辨率、图片命名
    UIImageView、UISlider、UISwitch、UIStepper、UISegmentControl
  • 原文地址:https://www.cnblogs.com/personnel/p/4582944.html
Copyright © 2011-2022 走看看