我使用JDBC连接池与mysql服务器建立连接。
下面是我的代码片段
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发送更多请求,那么显示处理列表中的连接计数也在增加,
当此连接将关闭时。
为什么我害怕意味着它达到了最大连接数,它会显示错误。
我的连接池配置是:
<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"/>发布于 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意味着一个新连接将等待一个连接可用-没有超时。
https://stackoverflow.com/questions/29752138
复制相似问题