- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
javasql连接池.doc
到目前为目,JDBC2的连结池只是一个接口,没有真正的实现,JDBC3正在开发中,据报已经支持连结池,但JDBC3用了JNDI技术,连结池的配置可以让一个高手都烦死.目前第三方已经实现的连结池当然是poolman,1.0版对一般用户来说已经足够用了.配置也简单,2.0版虽然增加了一些功能,但配置也是采用JNDI,对RMI和EJB不懂的朋友可能很烦.建议用1.0的了.如果有兴趣,自己也可以实现连结池,最关键的技术也就是把连结作为参数传给一个BEAN,用完后返回这个参数连结而不是关闭.下面是一个简单的实现:DBConnectionManager.java程序清单如下:????????001?import?java.io.*;????002?import?java.sql.*;????003?import?java.util.*;????004?import?java.util.Date;????005????006?/**????007?*?管理类DBConnectionManager支持对一个或多个由属性文件定义的数据库连接????008?*?池的访问.客户程序可以调用getInstance()方法访问本类的唯一实例.????009?*/????010?public?class?DBConnectionManager?{????011?static?private?DBConnectionManager?instance;?//?唯一实例????012?static?private?int?clients;????013????014?private?Vector?drivers?=?new?Vector();????015?private?PrintWriter?log;????016?private?Hashtable?pools?=?new?Hashtable();????017????018?/**????019?*?返回唯一实例.如果是第一次调用此方法,则创建实例????020?*????021?*?@return?DBConnectionManager?唯一实例????022?*/????023?static?synchronized?public?DBConnectionManager?getInstance()?{????024?if?(instance?==?null)?{????025?instance?=?new?DBConnectionManager();????026?}????027?clients++;????028?return?instance;????029?}????030????031?/**????032?*?建构函数私有以防止其它对象创建本类实例????033?*/????034?private?DBConnectionManager()?{????035?init();????036?}????037????038?/**????039?*?将连接对象返回给由名字指定的连接池????040?*????041?*?@param?name?在属性文件中定义的连接池名字????042?*?@param?con?连接对象/????043?*/????044?public?void?freeConnection(String?name,?Connection?con)?{????045?DBConnectionPool?pool?=?(DBConnectionPool)?pools.get(name);????046?if?(pool?!=?null)?{????047?pool.freeConnection(con);????048?}????049?}????050????051?/**????052?*?获得一个可用的(空闲的)连接.如果没有可用连接,且已有连接数小于最大连接数????053?*?限制,则创建并返回新连接????054?*????055?*?@param?name?在属性文件中定义的连接池名字????056?*?@return?Connection?可用连接或null????057?*/????058?public?Connection?getConnection(String?name)?{????059?DBConnectionPool?pool?=?(DBConnectionPool)?pools.get(name);????060?if?(pool?!=?null)?{????061?return?pool.getConnec
文档评论(0)