十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
请参考
成都创新互联公司专业为企业提供沙河口网站建设、沙河口做网站、沙河口网站设计、沙河口网站制作等企业网站建设、网页设计与制作、沙河口企业网站模板建站服务,10多年沙河口做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
首先配置:META-INF/context.xml:
?xml version="1.0" encoding="UTF-8"?
Context path="" reloadable="true" crossContext="true"
Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000" username="root" password="root"
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/db_name" /
/Context
再配置:WEB-INF/web.xml:在web-app元素下
resource-ref
descriptionDB Connection/description
res-ref-namejdbc/TestDB/res-ref-name
res-typejavax.sql.DataSource/res-type
res-authContainer/res-auth
/resource-ref
程序:
InitialContext ctx = new InitialContext();
Context envContext = (Context) ctx.lookup("java:comp/env");
DataSource ds = (DataSource) envContext.lookup("jdbc/TestDB");
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
stmt.execute(“执行的SQL语句”);
stmt.close();
conn.close();
1)不启用连接池
当创建到101个连接的时候,就无法再创建新连接了。也就是说,如果连接字符串不做任何处理,我们的程序只能够跟SQLServer建立101个连接。
2)启用连接池
在连接字符串中加入代码:
Pooling=true;Max Pool Size=40000;Min Pool Size=0;
微软在MSDN上对最大连接数的定义是:“默认是0,代表不限制,但最大连接数是32767
应该没什么问题,估计你那些都是空闲连接,你关闭了只是程序的连接,但是程序还是有连接池连接到sqlserver上,如果你那些空闲连接超过一定时间,就会自动关闭的。
连接池的概念是应用程序请求数据库连接时,如果没有“闲置”的数据库连接,就创建一个数据库连接放入连接池。
当连接对象dispose的时候, 将实际数据库重新设置为“闲置”,或者说“放回”连接池。“闲置”还是“放回”,具体实现机制可能不同,但是内涵基本一样,就是让物理连接可以被下一个逻辑连接请求使用。
当连接池中的闲置对象超过上限或者闲置时间超过上限的时候,就可以关闭部分或者全部物理连接。
应该是Connection对象没有Close造成的,导致它没有回到连接池里去。
检查一下代码,要么忘写了,要么是异常或提前返回导致没有执行Close
int maxCount = 40000;
string connstr="Server=joe;Database=AdventureWorks;User ID=sa;Password=test;pooling=true;connection lifetime=0;min pool size = 1;max pool size=40000";
修改连接字符串
新的错误和信息性消息框提供了详细信息,使您可以向 Microsoft 发送有关消息的注释,将消息复制到剪贴板,还可以通过电子邮件轻松地将消息发送给支持组。