繁体   English   中英

显示数据库中无效连接的连接池

[英]Connection pooling showing INACTIVE connections in database

我在Struts应用程序中使用SharedPoolDataSource连接池。 应用程序用户通过用户界面动态传递连接参数。 我正在创建DriverAdapterCPDS的对象,并将其分配给SharedPoolDataSource obj props。

SharedPoolDataSource tds = new SharedPoolDataSource();
            tds.setConnectionPoolDataSource(cpds);
            tds.setMaxActive(5);
            tds.setMaxIdle(2);
            tds.setMaxWait(50);
            tds.setTestOnBorrow(true);
            tds.setValidationQuery(validationQuery);

我将其存储在DBUtil类的哈希表中,并且公司名称为键。 像这个应用程序一样,用户为每个公司分配了大量数据库详细信息。

dbUtil.DSht.put(comp, tds);

用户从另一个程序(Swing App)发送公司名称。 因此,我需要获取公司各自的数据源对象,并在分配给用户的数据库上执行查询。 并将结果作为对象返回。

所以我写了这样的函数

public static Connection getClientConnection(String comp){
    Connection con = null;
    try{
        if(!dbUtil.DSht.contains(comp)){
            loadClientDataSource(comp);
        }
        DataSource ds = (DataSource)dbUtil.DSht.get(comp);            
        Idle:"+bds.getNumIdle());
        con = ds.getConnection();
    }catch(Exception e){
        e.printStackTrace();
        throw new DBUtilException("Unable to get the client connection object. Cause: "+e.getMessage());
    }        
    return con;
}

关闭数据库连接

public static void closeConnection(Connection con){
    try{
        if(con != null)
            con.close();
    }catch(Exception e){
        e.printStackTrace();
    }        
}

我在finally块中调用此closeConnection函数

try{
        con = DBUtil.getClientConnection(comp);
        pstmt = con.prepareStatement(sqlQuery);            
        pstmt.executeQuery();
    }catch(SQLException sqle) {
        sqle.printStackTrace();
        throw new QueryException("Unable to add query. Cause: "+sqle.getMessage());
    }finally{
        DBUtil.closeStatement(pstmt);
        DBUtil.closeConnection(con);
    }

使用连接池是否有任何问题? 使用此应用程序数据库后,显示出许多与我的计算机关联的INACTIVE连接。 即使在关闭连接后,它仍会显示为那样。 我只为数据库设置了2个MAXIDLE连接。

问题是什么? 为什么它显示了很多不活动的连接? 如果将数据源放在哈希表中有什么问题吗?

不必担心,处于非活动状态的会话并非异常。 检查http://asktom.oracle.com/pls/apex/f?p=100:11:0:::::P11_QUESTION_ID:914029001168

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM