已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
对于数据库数据不停的读取和更改,频繁的建立Connection是很不划算,建立连接池是很好的选择,在多个数据库数据之间来回倒换,需要为每个数据库建立一个池,本例的目的就是建立一个管理这些池的管理类,达到的目的是:在我们需要一个链接的时候,只要提供需要那个连接池(每个连接池对于一个名字,所有的连接池都装载入一个Map中)的名字,就可以得到链接进行操作,完毕需要关闭,关闭这个链接并不会真正的关闭,在池中他还是存在的。 首先定义个xml文件作为我们需要的连接池的配置文件:如下:config.xml Xml代码 1. 2. 3. 4. 5. one6. 7. name18. 9. pswd110. 11. jdbc:mysql:/IP/DataminInfo12. 13. 1014. 15. 16. 17. com.mysql.jdbc.Driver18. 19. 20. two21. name222. paswd223. jdbc:mysql:/IP/UIC24. 1025. 26. com.mysql.jdbc.Driver27. 28. one name1 pswd1 jdbc:mysql:/IP/DataminInfo 10 com.mysql.jdbc.Driver two name2 paswd2 jdbc:mysql:/IP/UIC 10 com.mysql.jdbc.Driver 作为对象操作,这个xml有相对应的Bean:如下: BaseConnBean.java Java代码 1. publicclassBaseConnBean 2. 3. privateStringname; 4. privateStringusername; 5. privateStringpassword; 6. privateStringjdbcurl; 7. privateintmax; 8. privatelongwait; 9. privateStringdriver; 10. publicStringgetDriver() 11. returndriver; 12. 13. publicvoidsetDriver(Stringdriver) 14. this.driver=driver; 15. 16. /其他setget方法 17. public class BaseConnBean private String name; private String username; private String password; private String jdbcurl; private int max; private long wait; private String driver; public String getDriver() return driver; public void setDriver(String driver) this.driver = driver; /其他set get方法还需要一个操作就是吧xml文件组装成Bean,并把这些bean加到list里面,代码如下 ConfigXml.java Java代码 1. importjava.io.FileInputStream; 2. importjava.io.FileNotFoundException; 3. importjava.io.IOException; 4. importjava.util.ArrayList; 5. importjava.util.Iterator; 6. importjava.util.List; 7. 8. importorg.jdom.Document; 9. importorg.jdom.Element; 10. importorg.jdom.JDOMException; 11. importorg.jdom.input.SAXBuilder; 12. 13. importcom.cgogo.mymodel.po.BaseConnBean; 14. 15. publicclassConfigXml 16. 17. publicstaticvoidmain(Stringargs) 18. read(config.xml); 19. 20. 21. publicstaticListread() 22. returnread(config.xml); 23. 24. 25. publicstaticListread(Stringpath) 26. Stringrpath=ConfigXml.class.getResource().getPath().substring(1) 27. +path; 28. FileInputStreamfi=null; 29. Listpools=newArrayList(); 30. try 31. fi=newFileInputStream(rpath); 32. SAXBuildersb=newSAXBuilder(); 33. Documentdoc=sb.build(fi); 34. Elementroot=doc.getRootElement(); 35. Listlist=root.getChildren(); 36. Elementpool=null; 37. IteratorallPool=list.iterator(); 38. while(allPool.hasNext() 39. pool=(Element)allPool.next(); 40. BaseConnBeanbcBean=newBaseConnBean(); 41. bcBean.setName(pool.getChildText(name); 42. 43. bcBean.setUsername(pool.getChildText(username); 44. bcBean.setPassword(pool.getChildText(password); 45. bcBean.setJdbcurl(pool.getChildText(jdbcurl); 46. try 47. bcBean.setMax(Integer.parseInt(pool.getChildText(max); 48. catch(NumberFormatExceptione) 49. bcBean.setMax(0); 50. 51. try 52. bcBean.setWait(Long.parseLong(pool.getChildText(wait); 53. catch(NumberFormatExceptione) 54. bcBean.setWait(-1L); 55. 56. bcBean.setDriver(pool.getChildText(driver); 57. pools.add(bcBean); 58. 59. catch(FileNotFoundExceptione) 60. System.out.println(filedoesnotfind); 61. e.printStackTrace(); 62. catch(JDOMExceptione) 63. System.out.println(jdomexception); 64. e.printStackTrace(); 65. catch(IOExceptione) 66. e.printStackTrace(); 67. 68. returnpools; 69. 70. import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.jdom.Document;import org.jdom.Element;import org.jdom.JDOMException;import org.jdom.input.SAXBuilder;import com.cgogo.mymodel.po.BaseConnBean;public class ConfigXml public static void main(String args) read(config.xml); public static List read() return read(config.xml); public static List read(String path) String rpath = ConfigXml.class.getResource().getPath().substring(1) + path; FileInputStream fi = null; List pools=new ArrayList(); try fi = new FileInputStream(rpath); SAXBuilder sb = new SAXBuilder(); Document doc = sb.build(fi); Element root = doc.getRootElement(); List list=root.getChildren(); Element pool = null; Iterator allPool = list.iterator(); while(allPool.hasNext() pool=(Element) allPool.next(); BaseConnBean bcBean=new BaseConnBean(); bcBean.setName(pool.getChildText(name); bcBean.setUsername(pool.getChildText(username); bcBean.setPassword(pool.getChildText(password); bcBean.setJdbcurl(pool.getChildText(jdbcurl); try bcBean.setMax(Integer.parseInt(pool.getChildText(max); catch(NumberFormatException e) bcBean.setMax(0); try bcBean.setWait(Long.parseLong(pool.getChildText(wait); catch(NumberFormatException e) bcBean.setWait(-1L); bcBean.setDriver(pool.getChildText(driver); pools.add(bcBean); catch (FileNotFoundException e) System.out.println(file does not find); e.printStackTrace(); catch (JDOMException e) System.out.println(jdom exception); e.printStackTrace(); catch (IOException e) e.printStackTrace(); return pools; 最后,最关键的类就是管理类了,(需要增加dbcp的jar包,同时还需要commons-pools)代码如下 Java代码 1. 2. importjava.sql.Connection; 3. importjava.sql.DriverManager; 4. importjava.sql.SQLException; 5. importjava.util.HashMap; 6. importjava.util.List; 7. importjava.util.Map; 8. 9. mons.dbcp.ConnectionFactory; 10. mons.dbcp.DriverManagerConnectionFactory; 11. mons.dbcp.PoolableConnectionFactory; 12. mons.dbcp.PoolingDriver; 13. mons.pool.ObjectPool; 14. mons.pool.impl.GenericObjectPool; 15. 16. importcom.cgogo.mymodel.po.BaseConnBean; 17. importcom.cgogo.mymodel.util.ConfigXml; 18. 19. publicclassMyDbPool 20. publicstaticvoidmain(Stringargs) 21. 22. 23. 24. privatestaticStringdbJdbc=null; 25. 26. privatestaticStringdbUser=null; 27. 28. privatestaticStringdbPwd=null; 29. 30. privatestaticintmax; 31. 32. privatestaticlongwait; 33. 34. privatestaticStringdriver=null; 35. 36. privatestaticClassdriverClass=null; 37. 38. privatestaticObjectPoolconnectionPool=null; 39. 40. publicstaticMapmap=null; 41. 42. publicMyDbPool() 43. 44. 45. /*/* 46. *初始化数据源 47. */48. privatestaticsynchronizedvoidinitDataSource() 49. /驱动数据源 50. if(driverClass=null) 51. try 52. driverClass=Class.forName(driver); 53. catch(ClassNotFoundExceptione) 54. e.printStackTrace(); 55. 56. 57. 58. 59. /*/* 60. *连接池启动 61. * 62. *throwsException 63. */64. publicstaticvoidStartPool(Stringpoolname,StringdbJdbc,StringdbUser, 65. StringdbPwd,intmax,longwait) 66. /初始化数据源 67. initDataSource(); 68. /如果连接池为空 69. if(connectionPool!=null) 70. ShutdownPool(); 71. 72. try 73. connectionPool=newGenericObjectPool(null,max,(byte)1,wait); 74. ConnectionFactoryconnectionFactory=newDriverManagerConnectionFactory( 75. dbJdbc,dbUser,dbPwd); 76. PoolableConnectionFactorypoolableConnectionFactory=newPoolableConnectionFactory( 77. connectionFactory,connectionPool,null,null,false,true); 78. Class.forName(mons.dbcp.PoolingDriver); 79. PoolingDriverdriver=(PoolingDriver)DriverManager 80. .getDriver(jdbc:apache:commons:dbcp:); 81. driver.registerPool(poolname,connectionPool); 82. map.put(poolname,connectionPool); 83. System.out.println(Create+poolname 84. +forDatabaseConnectionSuccees.); 85. catch(Exceptione) 86. e.printStackTrace(); 87. 88. 89. 90. /*/* 91. *释放连接池 92. */93. publicstaticvoidShutdownPool() 94. try 95. PoolingDriverdriver=(PoolingDriver)DriverManager 96. .getDriver(jdbc:apache:commons:dbcp:); 97. driver.closePool(dbpool); 98. catch(SQLExceptione) 99. e.printStackTrace(); 100. 101. 102. 103. /*/* 104. *打印连接池状态 105. */106. publicstaticStringGetPoolStats(Stringpoolname) 107. 108. StringBufferstat=newStringBuffer(); 109. try 110. PoolingDriverdriver=(PoolingDriver)DriverManager 111. .getDriver(jdbc:apache:commons:dbcp:); 112. ObjectPoolconnectionPool=driver.getConnectionPool(poolname); 113. 114. stat.append(-ActiveConnection:); 115. stat.append(connectionPool.getNumActive(); 116. stat.append(,); 117. stat.append(FreeConnection:); 118. stat.append(connectionPool.getNumIdle(); 119. stat.append(.-); 120. catch(Exceptione) 121. e.printStackTrace(); 122. 123. returnstat.toString(); 124. 125. 126. /*/* 127. *取得连接池中的连接 128. * 129. *return 130. */131. publicsynchronizedstaticConnectiongetDbConnection(Stringpoolname) 132. Connectionconn=null; 133. if(map=null) 134. System.out.println(mapnull); 135. map=newHashMap(); 136. 137. if(map.get(poolname)=null) 138. init(poolname);/初始化基本数据 139. StartPool(poolname,dbJdbc,dbUser,dbPwd,max,wait); 140. 141. try 142. conn=DriverManager.getConnection(jdbc:apache:commons:dbcp:143. +poolname); 144. catch(SQLExceptione) 145. e.printStackTrace(); 146. 147. returnconn; 148. 149. 150. privatestaticvoidinit(Stringpoolname) 151. Listpools=ConfigXml.read(); 152. for(BaseConnBeanbaseConnBean:pools) 153. if(baseConnBean.getName().equals(poolname) 154. dbJdbc=baseConnBean.getJdbcurl(); 155. dbUser=baseConnBean.getUsername(); 156. dbPwd=baseConnBean.getPassword(); 157. max=baseConnBean.getMax(); 158. wait=baseConnBean.getWait(); 159. driver=baseConnBean.getDriver(); 160. 161. 162. 163. 164. 165. publicstaticvoidclose(Connectionc) 166. try 167. if(c!=null) 168. c.close(); 169. catch(SQLExceptione) 170. e.printStackTrace(); 171. 172. 173. 174. import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.HashMap;import java.util.List;import java.util.Map;import mons.dbcp.ConnectionFactory;import mons.dbcp.DriverManagerConnectionFactory;import mons.dbcp.PoolableConnectionFactory;import mons.dbcp.PoolingDriver;import mons.pool.ObjectPool;import mons.pool.impl.GenericObjectPool;import com.cgogo.mymodel.po.BaseConnBean;import com.cgogo.mymodel.util.ConfigXml;public class MyDbPool public static void main(String args) private static String dbJdbc = null; private static String dbUser = null; private static String dbPwd = null; private static int max; private static long wait; private static String driver = null; private static Class driverClass = null; private static ObjectPool connectionPool = null; public static Map map = null; public MyDbPool() /* */* * 初始化数据源 */ private static synchronized void initDataSource() / 驱动数据源 if (driverClass = null) try driverClass = Class.forName(driver); catch (ClassNotFoundException e) e.printStackTrace(); /* */* * 连接池启动 * * throws Exception */ public static void StartPool(String poolname, String dbJdbc, String dbUser, String dbPwd, int max, long wait) / 初始化数据源 initDataSource(); / 如果连接池为空 if (connectionPool != null) ShutdownPool(); try connectionPool = new GenericObjectPool(null, max, (byte) 1, wait); ConnectionFactory connectionFactory = new DriverManagerConnectionFactory( dbJdbc, dbUser, dbPwd); PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory( connectionFactory, connectionPool, null, null, false, true); Class.forName(mons.dbcp.PoolingDriver); PoolingDriver driver = (PoolingDriver) DriverManager .getDriver(jdbc:apache:commons:dbcp:); driver.registerPool(poolname, connectionPool); map.put(poolname, connectionPool); System.out.println(Create + poolname + for Database Connection Succees.); catch (Exception e) e.printStackTrace(); /* */* * 释放连接池 */ public static void ShutdownPool() try PoolingDriver driver = (PoolingDriver) DriverManager .getDriver(jdbc:apache:commons:dbcp:); driver.closePool(dbpool); catch (SQLException e)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国联水产合作协议书
- 地磅低价转让协议书
- 2025年检验初级考试试题及答案
- 2025年客运安全试卷及答案
- 2025制药行业现状供需热点分析投资决策布局规划研究报告
- 2025制药原料药行业市场供需分析及投资评估规划分析研究报告
- 2025制药中间体氯碱化工生产过程智能化工艺优化技术路线研究分析规划报告
- 马戏之夜创意美术课件
- 2025再生资源行业市场供需现状及投资评估趋势布局分析研究报告
- 2025共享单车行业市场现状与增长预测发展研究报告
- 2025年广东普法考试题目及答案
- 2025中小学教师高级职称专业水平能力题库及答案
- 预防医学科流感疫苗接种指南培训
- 2025年陕西有色金属科工贸服务有限公司招聘(24人)考试笔试参考题库附答案解析
- 2025广东深圳市宝安区审计局招聘机关事业单位编外人员1人笔试考试参考题库及答案解析
- 新车托运协议书模板
- 旅行社会议协议合同
- 陕西有色校招笔试题及答案
- 提高献血服务质量课件
- 医院会计笔试题库及答案
- 厂房施工进度汇报
评论
0/150
提交评论