l频繁的建立、关闭连接,会极大的减低系统的性能,因为对于连接的使用成了系统性能的瓶颈。
(2)连接是一种关键的有限的昂贵的资源
这一点在多用户的网页应用程序中体现得尤为突出。对连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。连接池正是针对这个问题提出来的。
连接池是这么一种机制,当应用程序关闭一个Connection的时候,这个连接被回收,而不是被destroy,因为建立一个连接是一个很费资源的操作。如果能把回收的连接重新利用,会减少新创建连接的数目,显著的提高运行的性能。该策略的核心思想是:连接复用。
通过采用连接池的方法,服务器在启动时先打开一定数量的连接。当应用需要连接时,就可以从服务器请求一个连接。当应用结束该连接时,服务器就把它释放到连接池,以备其他客户机使用。
(3)连接池的主要作用
l减少了建立和释放连接的消耗
l连接池负责分配、管理和释放连接,它允许应用程序重复使用一个现有的连接,而再不是重新建立一个;
l释放空闲时间超过最大空闲时间的连接来避免因为没有释放连接而引起的连接遗漏。这项技术能明显提高对操作的性能。
l封装用户信息使用连接池可以封装连接系统所用的用户信息(帐号和密码),这样客户端程序在建立连接时不用考虑安全信息。
(4)连接池的工作原理
当程序中需要建立连接时,只须从内存中取一个来用而不用新建。同样,使用完毕后,只需放回内存即可。而连接的建立、断开都有连接池自身来管理。同时,我们还可以通过设置连接池的参数来控制连接池中的连接数、每个连接的最大使用次数等等
(5)连接池的最小连接数和最大连接数
连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:
l最小连接数是连接池一直保持的连接,所以如果应用程序对连接的使用量不大,将会有大量的连接资源被浪费;
l最大连接数是连接池能申请的最大连接数,如果连接请求超过此数,后面的连接请求将被加入到等待队列中,这会影响之后的操作。
如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的连接。不过,这些大于最小连接数的连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时后被释放。
(6)使用连接池得到连接
假设应用程序需要建立到一个名字为EmpolyeeDB的DataSource的连接。使用连接池得到连接的代码如下:
Contextctx=newInitialContext();
DataSourceds=(DataSource)ctx.lookup("jdbc/EmployeeDB");
Connectioncon=ds.getConnection("myPassword","myUserName");
或者:
Contextctx=newInitialContext();

ConnectionPoolDataSourceds=(ConnectionPoolDataSource)ctx.lookup("jdbc/EmployeeDB");
PooledConnectioncon=ds.getConnection("myPassword","myUserName");
是否使用连接池获得一个连接,在应用程序的代码上是看不出不同的。在使用这个Connection连接上也没有什么不一样的地方,唯一的不同是在java的finally语句块中来关闭一个连接。在finally中关闭连接是一个好的编程习惯。这样,即使方法抛出异常,Connection也会被关闭并回收到连接池中去。代码应该如下所示:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-27620-9.html
还特么学法律的