Java 关闭连接池中的数据库连接
我正在使用JDBC连接池与mysql服务器建立连接 下面是我的代码片段Java 关闭连接池中的数据库连接,java,mysql,servlets,tomcat7,connection-pooling,Java,Mysql,Servlets,Tomcat7,Connection Pooling,我正在使用JDBC连接池与mysql服务器建立连接 下面是我的代码片段 try { InitialContext initialContext = new InitialContext(); Context context = (Context) initialContext.lookup("java:comp/env"); DataSource ds = (DataSource) context.lookup("connpool");
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(); }
我的疑问是:
我的怀疑是,我甚至在MySQL中关闭了连接(conn.close())
显示进程列表命令它显示连接
如果我向servlet发送更多请求,show processlist中的连接数也会增加
此连接将在何时关闭
为什么我担心这意味着它达到了最大连接数,它将显示错误
我的连接池配置为:
<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"/>
从中,有些初始值的设置与资源配置中的设置不一致
(默认值为10)minIdle
(默认值为10)initialSize
maxActive=“1”
maxIdle=“0”
maxActive=“1”
maxIdle=“1”
minIdle=“1”
initialSize=“1”
close()
只会将连接从繁忙队列传递到空闲队列
如果您真的想根本不使用池,则应尝试显式设置:
maxActive=“1”
maxIdle=“0”
minIdle=“0”
initialSize=“0”
请注意,
maxWait=-1
意味着新连接将一直等待,直到连接可用,而不会超时 检查数据源的配置。可能它正在打开一个新连接,直到达到允许的最大连接数,然后它将开始重用它们。当您发出conn.close
时,连接池可能不会实际关闭物理数据库连接,而只是将其释放出来供另一个getConnection
@luigimendoza I have set maxActive=“1”maxIdle=“0”maxWait=“-1”您可以发布连接池的完整配置吗?你在使用什么库?@JohnR我已经在帖子中添加了资源配置。