在做系统优化的时候师哥给我们提了一个连接池的概念,问我们有没有配置,我对这个概念一无所知,于是进行了一些研究,连接池有很多,比如WCF、EF还有数据库、CAS也可以配连接池,这些连接池用通俗的语言来说就是一个池子,池子里的资源可以收放自如,不用的时候可以立即收回,和我们通常用到USing的作用有些相似,就是可以自动的释放connection资源。
数据库中连接池的配置如下:
<span style="font-size:14px;"> </span><strong><span style="font-size:18px;"> stringconStr ="server=127.0.0.1.;uid=sa;pwd=tcaccp;database=pubs;pooling=true;min pool size=5;max pool size=10".</span></strong>其中 pooling 表示是否打开连接池,默认为打开,关掉时需要 pooling = false;
下面是段关于using的代码:
using (SqlBulkCopy sqlBC = new SqlBulkCopy(sqlConn)) { //設定 NotifyAfter 属性,以便在每插入10000 条数据时,呼叫相应事件。 //设置要批量写入的表 sqlBC.DestinationTableName = tableName; //自定义的datatable和数据库的字段进行对应 //sqlBC.ColumnMappings.Add("id", "tel"); //sqlBC.ColumnMappings.Add("name", "neirong"); for (int i = 0; i < dtColum.Count; i++) { sqlBC.ColumnMappings.Add(dtColum[i].ColumnName.ToString(), dtColum[i].ColumnName.ToString()); } //批量写入 sqlBC.WriteToServer(dt); }这里用了using,自动关闭连接,不光能导入命名空间,还能在程序体内,局部使用某个对象。像上边代码,sqlCon 的作用域只有 using 对应的大括弧这么大。更神奇的是,using 可以在对象作用域结束时,自动调用 sqlCon.Dispose()将对象释放,所以以上代码中,没有 sqlCon.Close() 和 sqlCon.Dispose(),同样可以释放资源,放回连接池。
上面说的是关于数据库连接池的一些配置,下面说下Tomcat连接池的配置,因为在用单点登录的时候需要将服务端搭到Tomcat中,而我们在测试的时候发现登录很慢,于是我也搜了一些关于Tomcat连接池的配置:
1.所有的tomcat项目共用一个连接池配置:在tomcat6->conf->context.xml文件中,在<context></context>之间添加
<Context> <Resource name="jdbc/mengshan" auth="Container" type="javax.sql.DataSource" maxActive="20" maxIdel="10" maxWait="1000" username="root" password="" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/test" > </Resource> </Context>然后 web.xml中的<web-app></web-app>添加:
<resource-ref> <res-ref-name>jdbc/mengshan </res-ref-name> <res-type>javax.sql.DataSource </res-type> <res-auth>Container</res-auth> </resource-ref>这些连接池配置的原理其实是一样的,只是放到了不用的情景下。希望和大家交流!