基于java数据库连接池的研究毕业论文(24页).docx
《基于java数据库连接池的研究毕业论文(24页).docx》由会员分享,可在线阅读,更多相关《基于java数据库连接池的研究毕业论文(24页).docx(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-基于java数据库连接池的研究毕业论文-第 22 页本科毕业论文(设计)论文(设计)题目: 基于java数据库连接池的研究毕业论文(设计)原创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。 作者签名: 日期: 毕业论文(设计)授权使用说明本论文(设计)作者完全了解*学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。有权将
2、论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。学校可以公布论文(设计)的全部或部分内容。保密的论文(设计)在解密后适用本规定。 作者签名: 指导教师签名: 日期: 日期: 注 意 事 项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词 5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。3
3、.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订3)其它摘 要在基于JDBC的数据库实际应用开发中,
4、对数据库连接的管理是一个重点也是一个难点,频繁对数据库的连接与关闭操作 多客户对数据库的并发访问,一定程度上决定了WEB系统的响应以及应用性能。使用数据库连接池方式能对数据库的连接进行管理和维护,上层应用程序通过数据库连接池使用数据库资源能提升系统性能,充分利用系统资源。文章通过介绍 分析数据库连接池工作的基本原理,了解目前流行的WEB服务器在数据库连接池方面的使用现状后,总结一了些数据库连接池开发程序中容易忽略的问题。并在学习掌握了实现连接池的关键技术后给出了一个较为高效的连接池管理策略在这种策略思想的指导下实际开发出一个数据库连接池模块,使得上层应用通过本连接池访问数据库资源变得相对高效和
5、容易,从实际上论证了这种设计方案的可行性。 关键词:连接池;数据库;JDBC;并发访问 ResearchandrealizationoftheDatabase ConnectionPoolAbstractInthepracticallyapplicationdevelopmentofdatabasebasedonJDBC,themanagementofdatabaseconnectionisakeypointandalsoadifficulty.TheresponseandperformanceoftheWEBsystemaredependedonfrequentlyconnecting,cl
6、osingandmulti-useraccessinginacertainextent.UsingtheDatabaseConnectionPoolcanprovidemanagementandmaintenanceforconnectionsofthedatabase.TheupperapplicationsmayaccessthedatabaserecourseviatheDatabaseConnectionPool,inordertoupgradesystemperformanceandfullyutilizethesystemrecourse.Thisarticlesummarizes
7、someissueswhicharefeasibilityofthisdesignprojectinpractice.Keywords:DatabaseConnectionPool;Database;JDBC; Concurrenceaccess 目 录1 引言11.1课程背景11.2连接池的主要作用11.3目前流行的WEB服务器数据库连接池方面使用现状1 1.3.1 DHCP介绍2 1.3.2 poolman介绍2 1.3.3 C3P0介绍2 1.3.4 其他连接池(自写连接池)22 相关理论基础32.1数据库概论32.2数据库连接池的基本原理32.3连接池中的关键技术4 2.3.1 连接池
8、的分配与释放4 2.3.2 连接池的维护53 系统总体设计思想及方案53.1连接池中的关键类设计63.2连接池中的管理机制73.3实现一个连接池的其他问题8 3.3.1 事务处理8 3.3.2 封装错误!未定义书签。 3.3.3 并发错误!未定义书签。 3.3.4 连接池的关闭错误!未定义书签。4 具体的设计流程和实现错误!未定义书签。4.1连接池的建立104.2连接池的管理124.3连接池的关闭144.4连接池的测试155 系统测试问题的总结155.1连接池的泄露问题15 5.1.1 产生现象15 5.1.2 解决办法165.2多数据库服务器问题176 总结19参考文献20谢 辞211 引言
9、 1.1 课题背景 随着信息技术的高速发展与广泛应用,数据库技术在信息技术领域中的位置越来越重要。传统的开发模式是:首先在主程序(如Servlet、Beans)中建立数据库连接;然后进行SQL操作,对数据库中的对象进行查询,修改和删除等;最后断开数据库连接。使用这种开发模式,对于一个简单的数据库应用,由于数据库的访问不是很频繁,只需要在访问数据库时创建一个连接,用完后就关闭它,这样做不会明显增大系统的开销但是对于一个复杂的数据库应用,情况就完全不同了,尤其是大型电子商务网站,同时可能有几百人基至几千人在线。在这种情况下,用户操作频繁的建立、关闭数据库,会极大的降低系统的性能,增大系统的开销,迫
10、使网站的响应速度下降,严重的甚至会造成服务器的崩溃。针对这些突出问题,采用运行速度更快,数据库访问效率更高的数据库连接池技术,以提高系统的运行效率将是至关重要的,因此本文提出了一种基于数据库连接池技术的有效解决方法。以加强对数据库操作的性能,改善资源使用率,提高应用程序的响应能力。 1.2连接池的主要作用 一个应用系统,同时有几百人县至几千人频繁的进行数据库连接操作势必占用很多的系统资源,严重的基至会造成服务器的崩溃。对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将不得不重启数据库。还有,如果不能控制被创建的连接对象数,系统资源会
11、被毫无顾及的分配出去,连接过多也可能导致内存泄漏,服务器崩溃。针对这些突出问题,因此提出 了一种基于数据库连接池技术的有效解决方法。简而言之,数据库连接池主要作用是负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不再是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。 1.3目前流行的web服务器数据库连接池方面使用现状 由于JDBC的API中没有提供连接池的方法。一些大型的WEB应用服务器如WebLogic、Websphere等都自带有连接池。不同的是,tomcat并没有自已发连接池,而是集成的apache
12、的另外一个开源项目DBCP连接池。BEA的WebLogic自身带有一个连接池,这个连接池无法与WebLogic分离,但是也必须有其第三方的专用类方法支持连接池的用法,而不需要用户再去写一个连接池。以下是一些第三方连接池: 1.3.1DHCP介绍 DBCP应Apache的Jakarta组织开发,是目前使用较为广泛的一个连接池,一是因为tomcat自带的就是这个连接池,二是因为开源免费。由于其使用的稳定性不是很好,普名的开源项目hibernate不再提供对它的支持。DBCP部分参数说明如下: datasource:要连接的datasource(通常我们不会定义在 server.xml)。defau
13、ltAutocommit:对于事务是否autocommit,默认值为true。 defaultReadonly:对于数据库是否只能读取,默认值为false。 driverclassName:连接数据库所用的JDBCDriverClass。maxActive:最大连接数据库连接数,设0为没有限制。 maxldle:最大等待连接中的数量,设0为没有限制。 maxwait:最大等待秒数,单位为ms,超过时间会出错误信息。 password:登陆数据库所用的密码。 url:连接数据库的URL。 username:登陆数据库所用的帐号。 validationQuery:验证连接是否成功,SQLSELEC
14、T指令至少要返回一行。 removeAbandoned:是否自我中断,默认是false。 removeAbandonedTimeout:几秒后会自我中断,removeAbandoned必须为true。IogAbandoned:是否记录中断事件,默认为false。 1.3.2Poolman介绍 Poolman连接池前几年应用较广泛现在应用相对较少。配置步骤主要是先在/项日名称/web-Inf/下加入一jar包,然后配置一个xml文件,文件属性类似于DBCP,最后在程序中写出调用该连接池的方法。 1.3.3C3PO介绍 C3PO是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate
15、一起发布,包括了实现JDBC3.0和JDBC2.0扩展规范说明的Connection和Statement池的Datasource对象。自从hibemate自带了c3po以后,c3po很快就受到了广大程序员的认可,其性能上来说比DBCP要好的多。 1.3.4其他连接池(自写连接池) 有些程序员喜欢自己写连接池,建议不用这样的方法,因为连接池的管理较为复杂,自己写常出现各种各样的错误,推荐使用有成熟技术的连接池,同时也方便系统的移植。2 相关理论基础 2.1 数据库概述 数据库,顾名思义,是存人数据的仓库。只不过这个仓库是在计算机存储设备上的,而且数据是按一定格式存放的。 当人们收集了大量的数据后
16、,应该把它们保存起来进入近一步的处理,进一步的抽取有用的信息。当年人们把数据存放在文件柜中,可现在随着社会的发展,数据量急剧增长,现在人们就借助计算机和数据库技术科学的保存大量的数据,以便能更好的利用这些数据资源。 要是下定义的话,就应该是:指长期储存在计算机内的,有组织的,可共享的数据集合。 数据库包含关系数据库,面向对象数据库及新兴的XML数据库等多种,目前应用最广泛的是关系数据库,若在关系数据库基础上提供部分面向对象数据库功能的对象关系数据库。在数据库技术的早期还曾经流行过层次数据库与网状数据库,但这两类数据库目前已经极少使用。 2.2数据库连接池的基本原理 建立“缓冲存储池”,是数据库
17、连接池的基本设计思想。这种技术类似于CPU中的Cache技术,将预先设定好的数据库连接放入该缓冲池中,当要建立数据库连接操作时,便从池中取出一个连接,使用完毕后再将其放回。这样就达到了连接复用的目的,应用程序重复使用一个数据库连接,在多层结构的应用程序中通过连接池技术可以使系统的性能明显得到提到。最为关键的是,该方法避免了对数据库连接的频繁建立、关闭,减小了系统开销,提高了响应速度。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量,使用情况,为系统开发,测试及性能调整提供依据。数据库连接池属于应用程序对底层的调用,用户
18、并发访问应用程序时会提交访问请求,然后通过线程来处理这些请求,并向连接池申请一个对数据库操作的连接,操作完毕后将连接释放。应用程序调用连接池连接的基本工作原理如下图所示: 基于以上原理,连接池的建立会在后面章节中做具体描述。为了方便理解,连接池以JSP页面形式将最大连接数的设置、连接池的使用、超时等待、连接池的关闭等情况展示出来,给用户一个更为直观的感受。连接的调用原理如下图所示: 从图中可以看出当程序(JSP.Servlet.JavaBean)中需要数据库连接时,只需从内存中取出一个来,并将这个取得的连接加入Vector中,而不用新建连接;使用完毕后放回内存中,并将Vector中的已用连接删
19、除。 2. 3 连接池中的关键技术 2.3.1连接池的分配与释放 连接池的分配与释放技术对系统的性能有很大的影响。合理的分配与释放,可以提高连接的复用度,从而降低建立新连接的开销,同时还可以加快用户的访问速度。对于连接的管理。每当用户请求一个连接时,系统首先检查连接池内有没有空闲连接。如果有就把建立时间最长(通过容器的顺序存放实现)的个连接分配给他(实际是先做连接是否有效的判断,如果可用就分配给用户,若不可用就把这个连接删掉,重新检测是否还有连接);如果检查到当前所开连接池没有达到连接池所允许的最大连接数(maxconn),就新建一个连接,如果已经达到,就等待一定的时间(timeout)。如果
20、在等待的时间内有连接被释放出来就可以把这个连接分配给等待的用户,如果等待时间超过预定时间timeout,则返回空值(null)系统对已经分配出去正在使用的连接只做计数。2.3.2连接池的维护 数据库连接池到底要放置多少个连接,这是个配置策略。为了使系统的性能达到最佳状态,连接池中的连接数的设定显得尤为重要,我们采用设置最大连接数(maxconn)和最小连接数(minconn)的方式来解决这一问题。所谓最大连接数,即连接池中允许连接的最大数目,然后,最大连接数的设定要通过具体的应用需求来给出一个连接池可以承受的最大连接数目的最佳点。如果应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被
21、加入到等待队列中,等待其他连接的释放后再来调用一空闲连接(freeconn),这样可能会影响部分对数据厍的操作。所谓最小连接数,即应用启动前,已经预先创建好的连接数。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。如果最小连接数过大,么系统启动过程将变慢,若应用程序对数据库的访问量不大,过多的数据库连接资源将被浪费,但是系统启动后响应更快;如果过小系统启动将加快,但是最初使用的用户会因为连接池中没有足够的连接而会发送一个新的数据库连接请求,将不可避免的延缓执行速度。 3系统总体设计思想及方案 数据库连接池技术的设计思想非常简单,先将数据库连接作为对象存储在一个Vect
22、or对象中,Vector类可以实现可增长的对象“数组”。Vector的大小可以根据需要增大或缩小,以适应创建Vector后进行添加或移除项的操作。这里主要包含使用的连接(nowconnections)和未使用的连接(freeconnections)两个Vector类创建的对象,创建Vector对象的方法如下: publicDBConnectionpool(vectorconnections) freeconnections = newVectoro(); nowconnections=newVector(); 当外部程序向数据库申请建立连接后系统会调用nowconnections.add()方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 java 数据库连接 研究 毕业论文 24
限制150内