首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭连接池中的数据库连接

关闭连接池中的数据库连接
EN

Stack Overflow用户
提问于 2015-04-20 15:30:30
回答 1查看 2.6K关注 0票数 1

我使用JDBC连接池与mysql服务器建立连接。

下面是我的代码片段

代码语言:javascript
复制
  try {
       InitialContext initialContext = new InitialContext();
        Context context = (Context) initialContext.lookup("java:comp/env"); 
        DataSource ds = (DataSource) context.lookup("connpool");
        Connection conn =  ds.getConnection();
        //some query is executed 
    }
    catch(SQLException ex)
   {   } 
   finally {  conn.close(); }

我怀疑:

我在这里的疑问是,我甚至正在关闭连接(conn.close()),在MySQL show processlist命令中,它显示连接。

如果我向servlet发送更多请求,那么显示处理列表中的连接计数也在增加,

当此连接将关闭时。

为什么我害怕意味着它达到了最大连接数,它会显示错误。

我的连接池配置是:

代码语言:javascript
复制
          <Resource name="connpool" auth="Container" 
             type="javax.sql.DataSource" 
             maxActive="1" maxIdle="0"
             maxWait="-1"
             username="xxxxx" 
             password="xxxxx"
             driverClassName="com.mysql.jdbc.Driver"
             url="jdbc:mysql://localhost:3306/govsocial"/>
EN

回答 1

Stack Overflow用户

发布于 2015-04-20 16:42:53

tomcat文档中,有一些初始值与您在资源配置中设置的内容不一致。

  • minIdle (默认值为10)
  • initialSize (默认值为10)

如果您有一个方法,那么上面的默认值和配置都是

  • maxActive = "1"
  • maxIdle = "0"

最后你会:

  • maxActive = "1"
  • maxIdle = "1"
  • minIdle = "1"
  • initialSize = "1"

这是一个由1个连接组成的池,池的目的是为传入请求保留一些(取决于配置)连接。调用close()只会将连接从繁忙队列传递到空闲队列。

如果您确实希望没有池,则应该尝试显式设置:

  • maxActive = "1"
  • maxIdle = "0"
  • minIdle = "0"
  • initialSize = "0"

注意,maxWait = -1意味着一个新连接将等待一个连接可用-没有超时。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29752138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档