`
mengdejun
  • 浏览: 408115 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Easyconnectionpool1.0

 
阅读更多
    1. <?xmlversion="1.0"encoding="gb2312"?>
    2. <driverxmlns:xsd="http://www.w3.org/2001/XMLSchema">
    3. <dbmsdrivername="华工达梦数据库系统">
    4. <driverclass>dm.jdbc.driver.DmDriver</driverclass>
    5. <url>jdbc:dm://localhost:12345/guest</url>
    6. <username>SYSDBA</username>
    7. <password>123456</password>
    8. <maxconnection>9</maxconnection>
    9. <minconnection>5</minconnection>
    10. <logpath>..//poolserver.log</logpath>
    11. </dbmsdriver>
    12. <!--thisprogramcopyrightbymengdejun-->
    13. </driver>
    package
    com.mdj.connectionpool;
  1. importjava.io.File;
  2. importjava.io.FileWriter;
  3. importjava.io.IOException;
  4. importjava.io.PrintWriter;
  5. importjava.sql.Connection;
  6. importjava.sql.DriverManager;
  7. importjava.sql.SQLException;
  8. importjava.util.Date;
  9. importjava.util.Vector;
  10. importjavax.xml.parsers.DocumentBuilder;
  11. importjavax.xml.parsers.DocumentBuilderFactory;
  12. importjavax.xml.parsers.ParserConfigurationException;
  13. importorg.w3c.dom.Document;
  14. importorg.w3c.dom.Element;
  15. importorg.w3c.dom.NodeList;
  16. importorg.xml.sax.SAXException;
  17. /**
  18. *@seeConnectionpooljava连接池.
  19. *@author武汉软件工程职业学院<br>
  20. *孟德军<br>
  21. *2009-01-01
  22. *@version1.0
  23. */
  24. publicclassConnectionpool{
  25. /**
  26. *@see#logpath日志文件存放的路径.
  27. */
  28. privateStringlogpath="//server.log";
  29. /**
  30. *@see#log记录连接池异常信息.
  31. */
  32. privatestaticPrintWriterlog;
  33. /**
  34. *@see#file日志文件
  35. */
  36. privateFilefile;
  37. /**
  38. *@see#driverclass数据库驱动类,默认mysql5.0
  39. */
  40. privateStringdriverclass="com.mysql.jdbc.Driver";
  41. /**
  42. *@see#url数据库连接地址,默认:jdbc:mysql://localhost:3306/guest
  43. */
  44. privateStringurl="jdbc:mysql://localhost:3306/guest";
  45. /**
  46. *@see#username数据库用户名,默认:root
  47. */
  48. privateStringusername="root";
  49. /**
  50. *@see#password数据库密码,默认:123456
  51. */
  52. privateStringpassword="123456";
  53. /**
  54. *@see#maxconnection连接池的最大容量,默认:10
  55. */
  56. privateintmaxconnection=10;
  57. /**
  58. *@see#minconnection连接池的最大容量,默认:5
  59. */
  60. privateintminconnection=5;
  61. /**
  62. *@see#pool连接池容器
  63. */
  64. privateVectorpool=null;//用于放连接池的容器
  65. privateConnectioncon=null;//
  66. privatestaticStringpath="";
  67. /**
  68. *@see#instanceconnectionpool:唯一实例,可通过getinstance获得.
  69. */
  70. privatestaticConnectionpoolinstance=null;
  71. /**
  72. *@see#Connectionpool()私有构造方法.
  73. */
  74. privateConnectionpool(){
  75. init();
  76. addConnection();
  77. }
  78. /**
  79. *@see#readconfig
  80. */
  81. privatevoidinit(){
  82. readconfig(path);
  83. pool=newVector(maxconnection);
  84. try{
  85. file=newFile(logpath);
  86. log=newPrintWriter(newFileWriter(file.getAbsolutePath(),true),
  87. true);
  88. serverlog(newDate()+":/tserverstart/n");
  89. }catch(IOExceptione){
  90. e.printStackTrace();
  91. serverlog(newDate()+":/t"+e.getMessage()+"/n");
  92. }
  93. }
  94. /**
  95. *
  96. *@see#getinstance(String)获取连接池的实例
  97. *@see#path配置文件路径.
  98. *@return#Connectionpool类的实例.
  99. */
  100. publicsynchronizedstaticConnectionpoolgetinstance(Stringpath){
  101. Connectionpool.path=path;
  102. if(instance==null){
  103. instance=newConnectionpool();
  104. }
  105. returninstance;
  106. }
  107. /**
  108. *
  109. *@return连接池中的连接.
  110. */
  111. publicsynchronizedConnectiongetconnection(){
  112. if(pool.size()>0){
  113. con=(Connection)pool.get(0);
  114. pool.remove(0);
  115. checkpool(pool);
  116. returncon;
  117. }else{
  118. returnnull;
  119. }
  120. }
  121. /**
  122. *
  123. *@paramcon用户当前使用的连接
  124. */
  125. publicsynchronizedvoidreleaseconnection(Connectioncon){
  126. pool.add(con);
  127. }
  128. /**
  129. *@see#closeconnectionpool(Connection)关闭连接池.
  130. *@paramcon用户当前使用的连接
  131. *@throwsSQLException
  132. */
  133. publicsynchronizedvoidcloseconnectionpool(){
  134. for(inti=0;i<pool.size();i++){
  135. try{
  136. ((Connection)pool.get(i)).close();
  137. pool.remove(i);
  138. serverlog(newDate()+":/tserverclose/n");
  139. }catch(SQLExceptione){
  140. e.printStackTrace();
  141. serverlog(newDate()+":/t"+e.getMessage()+"/n");
  142. }
  143. }
  144. }
  145. /**
  146. *@see#addConnection()连接池初始化,为连接池创建连接.
  147. */
  148. privatevoidaddConnection(){
  149. for(inti=0;i<minconnection;i++){
  150. try{
  151. Class.forName(driverclass);
  152. con=DriverManager.getConnection(url,username,password);
  153. pool.add(con);
  154. }catch(ClassNotFoundExceptione){
  155. //TODOAuto-generatedcatchblock
  156. e.printStackTrace();
  157. serverlog(newDate()+":/tclassnotfound"+e.getMessage()
  158. +"/n");
  159. }catch(SQLExceptione){
  160. e.printStackTrace();
  161. serverlog(newDate()+":/t"+e.getMessage()+"/n");
  162. }
  163. }
  164. }
  165. /**
  166. *@see#readconfig(String)读取配置文件.<br>
  167. *初始化数据库连接数据.
  168. *@sincehttp://blog.csdn.net/mak0000
  169. *<ahref="http://blog.csdn.net/mak0000">更多信息</a>
  170. *@throwspath为配置文件路径,文件路径错误会抛出FileNotFoundException异常
  171. */
  172. privatevoidreadconfig(Stringpath){
  173. DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
  174. try{
  175. DocumentBuilderbuilder=factory.newDocumentBuilder();
  176. Documentdocument=builder.parse(Connectionpool.path);
  177. NodeListnodelist=document.getElementsByTagName("dbmsdriver");
  178. for(inti=0;i<nodelist.getLength();i++){
  179. Elementelement=(Element)nodelist.item(i);
  180. driverclass=element.getElementsByTagName("driverclass").item(
  181. 0).getFirstChild().getNodeValue();
  182. url=element.getElementsByTagName("url").item(0)
  183. .getFirstChild().getNodeValue();
  184. username=element.getElementsByTagName("username").item(0)
  185. .getFirstChild().getNodeValue();
  186. password=element.getElementsByTagName("password").item(0)
  187. .getFirstChild().getNodeValue();
  188. maxconnection=Integer
  189. .parseInt(element.getElementsByTagName("maxconnection")
  190. .item(0).getFirstChild().getNodeValue());
  191. minconnection=Integer
  192. .parseInt(element.getElementsByTagName("minconnection")
  193. .item(0).getFirstChild().getNodeValue());
  194. logpath=element.getElementsByTagName("logpath").item(0)
  195. .getFirstChild().getNodeValue();
  196. }
  197. }catch(ParserConfigurationExceptione){
  198. //TODOAuto-generatedcatchblock
  199. e.printStackTrace();
  200. serverlog(newDate()+":/t"+e.getMessage()+"/n");
  201. }catch(SAXExceptione){
  202. e.printStackTrace();
  203. serverlog(newDate()+":/t"+e.getMessage()+"/n");
  204. }catch(IOExceptione){
  205. e.printStackTrace();
  206. serverlog(newDate()+":/t"+e.getMessage()+"/n");
  207. }
  208. }
  209. /**
  210. *@see#checkpool(Vector)检查连接池,并适当的为连接池添加一定数量的连接.回收无用的连接.
  211. *@parampool
  212. *连接池.
  213. */
  214. privatevoidcheckpool(Vectorpool){
  215. Vectorcheckpool=null;
  216. checkpool=pool;
  217. if(checkpool.size()<minconnection){
  218. while(pool.size()<maxconnection){
  219. addConnection();
  220. }
  221. }
  222. }
  223. /**
  224. *@see#serverlog(String)记录连接池运行信息.
  225. *@parammsg
  226. *异常信息.
  227. */
  228. publicvoidserverlog(Stringmsg){
  229. log.println(msg);
  230. log.close();
  231. }
  232. }
  1. packagecom.mdj.test;
  2. importjava.sql.Connection;
  3. importjava.sql.SQLException;
  4. importcom.mdj.connectionpool.Connectionpool;
  5. publicclassTest{
  6. publicTest(Stringpath){
  7. Connectionpoolpool=Connectionpool.getinstance(path);
  8. //请正确修改配置文件.
  9. Connectioncon=pool.getconnection();
  10. /**
  11. *你可以在这里书写的SQL语句.
  12. *
  13. */
  14. //释放连接.将连接返回给连接池。
  15. pool.releaseconnection(con);
  16. //关闭连接池.关闭服务器时使用.
  17. pool.closeconnectionpool(con);
  18. }
  19. publicstaticvoidmain(String[]args){
  20. Stringpath=System.getProperty("user.dir")+"//sysconfig.xml";
  21. newTest(path);
  22. }
  23. }

分享到:
评论

相关推荐

    java连接池 beta v3

    在描述中提到了“数据库连接池2.0”,这可能是`easyconnectionpool`的一个新版本,相比于之前的1.5版本,它引入了一个名为“Manager”的连接池控制器。这个控制器是连接池的核心部分,负责分配、回收和管理数据库...

    java连接池2.0

    Java连接池2.0,即EasyConnectionPool 2.0,是针对数据库连接管理的优化升级版本,旨在提高应用程序在处理数据库连接时的效率和稳定性。在这个版本中,开发团队引入了一个新的组件——连接池控制器(Manager),它...

    【9493】基于springboot+vue的美食信息推荐系统的设计与实现.zip

    技术选型 【后端】:Java 【框架】:springboot 【前端】:vue 【JDK版本】:JDK1.8 【服务器】:tomcat7+ 【数据库】:mysql 5.7+ 项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧! 在当今快速发展的信息技术领域,技术选型是决定一个项目成功与否的重要因素之一。基于以下的技术栈,我们为您带来了一份完善且经过实践验证的项目资源,让您在学习和提升编程技能的道路上事半功倍。以下是该项目的技术选型和其组件的详细介绍。 在后端技术方面,我们选择了Java作为编程语言。Java以其稳健性、跨平台性和丰富的库支持,在企业级应用中处于领导地位。项目采用了流行的Spring Boot框架,这个框架以简化Java企业级开发而闻名。Spring Boot提供了简洁的配置方式、内置的嵌入式服务器支持以及强大的生态系统,使开发者能够更高效地构建和部署应用。 前端技术方面,我们使用了Vue.js,这是一个用于构建用户界面的渐进式JavaScript框架。Vue以其易上手、灵活和性能出色而受到开发者的青睐,它的组件化开发思想也有助于提高代码的复用性和可维护性。 项目的编译和运行环境选择了JDK 1.8。尽管Java已经推出了更新的版本,但JDK 1.8依旧是一种成熟且稳定的选择,广泛应用于各类项目中,确保了兼容性和稳定性。 在服务器方面,本项目部署在Tomcat 7+之上。Tomcat是Apache软件基金会下的一个开源Servlet容器,也是应用最为广泛的Java Web服务器之一。其稳定性和可靠的性能表现为Java Web应用提供了坚实的支持。 数据库方面,我们采用了MySQL 5.7+。MySQL是一种高效、可靠且使用广泛的关系型数据库管理系统,5.7版本在性能和功能上都有显著的提升。 值得一提的是,该项目包含了前后台的完整源码,并经过严格调试,确保可以顺利运行。通过项目的学习和实践,您将能更好地掌握从后端到前端的完整开发流程,提升自己的编程技能。欢迎参考博主的详细文章或私信获取更多信息,利用这一宝贵资源来推进您的技术成长之路!

    (源码)基于Spring、Struts和Hibernate的OA系统.zip

    # 基于Spring、Struts和Hibernate的OA系统 ## 项目简介 本项目是一个基于Spring、Struts和Hibernate框架的办公自动化(OA)系统。该系统主要用于企业内部的日常办公管理,包括用户登录、组织管理、权限管理等功能。系统前端使用现成的模板和JavaScript、jQuery技术,后端通过Struts、Hibernate和Spring框架实现业务逻辑和数据持久化。 ## 项目的主要特性和功能 ### 登录模块 防止多设备登录系统能够检测到同一账号在不同设备上的登录情况,并在检测到异地登录时通知用户并强制下线。 WebSocket支持使用WebSocket技术实现实时通知功能。 ### 组织管理模块 部门管理支持部门的增删改查操作,包括查看部门信息、职位信息和员工数量。 用户管理支持用户的增删改查操作,包括指定用户所在部门、职位和角色。 角色管理支持角色的增删改查操作,包括查看角色权限和修改角色权限。

    基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)

    基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目),该项目是个人毕设项目,答辩评审分达到98分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高分项目)基于MySQL、express框架、Vue3的光谷智慧交通系统源码+数据库+文档说明(高

    open3d python 给点云每个点设置不同的颜色

    open3d python 给点云每个点设置不同的颜色

    【电磁】基于matlab具有Mur吸收边界的区域的二维FDTD【含Matlab源码 9136期】.mp4

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    HengCe-18900-2024-2030中国室内木门市场现状研究分析与发展前景预测报告-样本.docx

    HengCe-18900-2024-2030中国室内木门市场现状研究分析与发展前景预测报告-样本.docx

    (源码)基于ASP.NET Web API的供应链管理系统.zip

    # 基于ASP.NET Web API的供应链管理系统 ## 项目简介 供应链管理系统(SCM)是一个基于ASP.NET Web API框架开发的企业级应用,旨在帮助企业高效管理供应链中的各个环节。系统涵盖了供应商管理、采购管理、库存管理、订单管理等多个模块,通过API接口实现数据的增删改查操作,确保供应链的顺畅运作。 ## 项目的主要特性和功能 1. 供应商管理 供应商信息的增删改查操作。 供应商联系人管理。 供应商评级和分类管理。 2. 采购管理 采购订单的创建、编辑和删除。 采购产品的状态管理。 采购合同的生成和管理。 3. 库存管理 库存产品的入库和出库管理。 库存状态的实时监控。 4. 订单管理 订单的创建、编辑和删除。 订单状态的跟踪和管理。 5. 用户管理 用户登录和权限管理。 用户角色的分配和管理。

    基于SpringBoot的“学生考勤管理系统”的设计与实现(源码+数据库+文档+PPT).zip

    系统主要包括首页,个人中心,学生管理,教师管理,班级信息管理,课程信息管理,签到信息管理,考勤信息管理,请假信息管理,考勤统计管理等功能模块。

    维特协议标准精度示例程序c.zip

    c语言

    DICOM文件+DX放射平片-数字X射线图像DICOM测试文件

    DICOM文件+DX放射平片—数字X射线图像DICOM测试文件,文件为.dcm类型DICOM图像文件文件,仅供需要了解DICOM或相关DICOM开发的技术人员当作测试数据或研究使用,请勿用于非法用途。

    C#ASP.NET仓储管理系统源码数据库 SQL2008源码类型 WebForm

    ASP.NET仓储管理系统源码 一、 程序说明 该程序大部分使用于生产制造厂,其中结合了制造厂的采购,销售,生产等. 开源部分是仓库系统后台管理系 统, 在给客户实施的过程中利用到了很多硬件设备, 设计到Wince系统,Android系统等PDA设备,各种打印 机,条码打印机,感应设备等,而且这些可能在整个项目中占据主导,而后台管理系统只是辅助作用的。 该程序使用的.NET MVC开发,大量使用到了jQuery,以及Bootstrap。 数据库使用了SQL Server.

    【小程序毕业设计】面向文艺影视社群的微信小程序源码(完整前后端+mysql+说明文档).zip

    环境说明: 开发语言:Java/php JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea 小程序框架:uniapp/原生小程序 开发工具:HBuilder X/微信开发者

    Skia-macOS-Release-arm64.zip

    Skia-macOS-Release-arm64.zip aseprite 安装所需依赖安装包

    中国品牌日研究特辑-数字经济时代下中国品牌高质量发展之用户趋势.pdf

    中国品牌日研究特辑-数字经济时代下中国品牌高质量发展之用户趋势.pdf

    生成xcinsphfs0exefsromfscertifateticket转储从任天堂Switch游戏卡和安装的SDe.zip

    c语言

    一个基于qt开发的包含各种基础图像处理技术的桌面应用,图像处理算法基于halcon,有直接调用halcon脚本和执行halcon

    一个基于qt开发的包含各种基础图像处理技术的桌面应用,图像处理算法基于halcon,有直接调用halcon脚本和执行halcon C++代码方式。 导入图片,预处理,滤波,边缘检测,阈值分割,形态学变换,图像增强,图像变换,

    【9312】基于Springboot+vue的精品水果线上销售网站的设计与实现.zip

    技术选型 【后端】:Java 【框架】:springboot 【前端】:vue 【JDK版本】:JDK1.8 【服务器】:tomcat7+ 【数据库】:mysql 5.7+ 项目包含前后台完整源码。 项目都经过严格调试,确保可以运行! 具体项目介绍可查看博主文章或私聊获取 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧! 在当今快速发展的信息技术领域,技术选型是决定一个项目成功与否的重要因素之一。基于以下的技术栈,我们为您带来了一份完善且经过实践验证的项目资源,让您在学习和提升编程技能的道路上事半功倍。以下是该项目的技术选型和其组件的详细介绍。 在后端技术方面,我们选择了Java作为编程语言。Java以其稳健性、跨平台性和丰富的库支持,在企业级应用中处于领导地位。项目采用了流行的Spring Boot框架,这个框架以简化Java企业级开发而闻名。Spring Boot提供了简洁的配置方式、内置的嵌入式服务器支持以及强大的生态系统,使开发者能够更高效地构建和部署应用。 前端技术方面,我们使用了Vue.js,这是一个用于构建用户界面的渐进式JavaScript框架。Vue以其易上手、灵活和性能出色而受到开发者的青睐,它的组件化开发思想也有助于提高代码的复用性和可维护性。 项目的编译和运行环境选择了JDK 1.8。尽管Java已经推出了更新的版本,但JDK 1.8依旧是一种成熟且稳定的选择,广泛应用于各类项目中,确保了兼容性和稳定性。 在服务器方面,本项目部署在Tomcat 7+之上。Tomcat是Apache软件基金会下的一个开源Servlet容器,也是应用最为广泛的Java Web服务器之一。其稳定性和可靠的性能表现为Java Web应用提供了坚实的支持。 数据库方面,我们采用了MySQL 5.7+。MySQL是一种高效、可靠且使用广泛的关系型数据库管理系统,5.7版本在性能和功能上都有显著的提升。 值得一提的是,该项目包含了前后台的完整源码,并经过严格调试,确保可以顺利运行。通过项目的学习和实践,您将能更好地掌握从后端到前端的完整开发流程,提升自己的编程技能。欢迎参考博主的详细文章或私信获取更多信息,利用这一宝贵资源来推进您的技术成长之路!

    C#固定资产管理系统源码(带条码打印)数据库 SQL2008源码类型 WinForm

    固定资产管理系统源码(带条码打印) 功能介绍 1.基本信息管理:包括资产分类,基本资料,资产编号规则,保存列间距和选择资产显示列等功能; 2.固定资产管理:包括资产增加,资产更新,资产删除,资产清理,资产清理查询和资产折旧核算 3.数据维护管理:包系统数据初始化,系统数据备份/恢复等功能; 4.系统维护管理:包括本单位信息和操作员管理等功能; 5.系统辅助工具:包括计算器和记事本等功能; 6.条码打印:对条码进行打印等功能;

Global site tag (gtag.js) - Google Analytics