海妖 发表于 2015-1-18 11:22:02

JAVA网站制作之JSP数据库毗连池的需要性

自己的整个学习思路完全被老师的讲课思路所牵制,这样几节课听下来,恐怕自己的见解都应该是书里的知识点了,根本谈不上自身发现问题,分析问题,和解决问题能力的切实提高。js|数据|数据库|数据库毗连
比来我作了数据库JSP的频仍毗连,在此给出数据库毗连池的需要性,关于JSP来讲一个很好的J2EE服务器是很需要的,JBOOS,WebLogic都是很好的办理计划。


一样平常情形下,在利用开辟基于数据库的WEB程序时,传统的形式基础是按以下步骤:
  1.在主程序(如Servlet、Beans)中创建数据库毗连。
  2.举行SQL操纵,掏出数据。
  3.断开数据库毗连。
  利用这类形式开辟,存在良多成绩。起首,我们要为每次WEB哀求(比方观察某一篇文章的内容)创建一次数据库毗连,关于一次或几回操纵来说,也许你发觉不到体系的开支,可是,关于WEB程序来说,即便在某一较短的工夫段内,其操纵哀求数也远远不是一两次,而是数十上百次(想一想全球的网友都有大概在您的网页上查找材料),在这类情形下,体系开支是相称年夜的。现实上,在一个基于数据库的WEB体系中,创建数据库毗连的操纵将是体系中价值最年夜的操纵之一。良多时分,大概您的网站速率瓶颈就在于此。
  其次,利用传统的形式,你必需往办理每个毗连,确保他们能被准确封闭,假如呈现程序非常而招致某些毗连未能封闭,将招致数据库体系中的内存保守,终极我们将不能不重启数据库。
  针对以上成绩,我们起首想到能够接纳一个全局的Connection对象,创立后就不封闭,今后程序一向利用它,如许就不存在每次创立、封闭毗连的成绩了。可是,统一个毗连利用次数过量,将会招致毗连的不不乱,进而会招致WEBSERVER的一再重启。故而,这类办法也不成取。实践上,我们可使用毗连池手艺来办理上述成绩。起首,先容一下毗连池手艺的基础道理。望文生义,毗连池最基础的头脑就是事后创建一些毗连安排于内存对象中以备利用:
 

<br>
   
如图所示,当程序中必要创建数据库毗连时,只须从内存中取一个来用而不必新建。一样,利用终了后,只需放回内存便可。而毗连的创建、断开都有毗连池本身来办理。同时,我们还能够经由过程设置毗连池的参数来把持毗连池中的毗连数、每一个毗连的最年夜利用次数等等。经由过程利用毗连池,将年夜年夜进步程序效力,同时,我们能够经由过程其本身的办理机制来监督数据库毗连的数目、利用情形等。上面我们以一个名为ConnectionPool的毗连池为例来看看毗连池的完成。先看看ConnectionPool的基础属性:
  m_ConnectionPoolSize:毗连池中毗连数目上限
  m_ConnectionPoolMax:毗连池中毗连数目下限
  m_ConnectionUseCount:一个毗连的最年夜利用次数
  m_ConnectionTimeout:一个毗连的最漫空闲工夫
  m_MaxConnections=-1:统一工夫的最年夜毗连数
  m_timer:准时器
  这些属性界说了毗连池与个中的每一个毗连的无效形态值。毗连池的自我办理,实践上就是经由过程准时的对每一个毗连的形态、毗连的数目举行判别而举行响应操纵。其办理流程以下:


<br>

经由过程上图,我们能够界说出ConnectionPool要完成办理所必要的基础接口:
publicclassConnectionPoolimplementsTimerListener{
  publicbooleaninitialize()//毗连池初始化
  publicvoiddestroy()//毗连池的烧毁
  publicsynchronizedjava.sql.ConnectiongetConnection()//取一个毗连
  publicsynchronizedvoidclose()//封闭一个毗连
  privatesynchronizedvoidremoveFromPool()//把一个毗连从毗连池中删除
  privatesynchronizedvoidfillPool()//保护毗连池巨细
  publicsynchronizedvoidTimerEvent()//准时器事务处置函数
}
  经由过程这几个接口,已能够完成毗连池的基础办理。在TimeEvent()函数中完成毗连池的形态查验事情,fillPool()时毗连池最少坚持最小毗连数。由于我们要保留每个毗连的形态,以是还必要一个数据库毗连对象:
classConnectionObject{
  publicjava.sql.Connectioncon;publicbooleaninUse;//是不是被利用标记
  publiclonglastAccess;//比来一次入手下手利用工夫
  publicintuseCount;//被利用次数
}
到场了ConnectionObject对象后,在ConnectionPool中操纵的应当只是ConnectionObject,而其他历程必要的只是ConnectionObject的con属性,因而我们再到场一个类,作为其他历程取得与前往毗连的接口:CLASSConn{
  GetConnection();//从毗连池中掏出一个无效毗连
  CloseConnection();//前往毗连,此时并没有封闭毗连,只是放回了毗连池
  DestroyPool();//烧毁毗连池
}
  最初我们的全部体系总的架构以下:
     

<br>

经由过程下面的先容,我们能够看出,毗连池手艺的关头就是其本身的办理机制,以上的办理流程只是自己一点看法,关头是想向人人先容一种思绪,在此基本上,您能够进一步完美毗连池手艺为您所用。



java主要分三块,j2se:java的基础核心语言。j2me:java的微型模块,专门针对内存小,没有持续电源等小型设备。j2ee:java的企业模块,专门针对企业数据库服务器的连接维护。

金色的骷髅 发表于 2015-1-20 21:51:39

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

飘飘悠悠 发表于 2015-1-25 18:03:24

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

精灵巫婆 发表于 2015-1-25 21:06:20

一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。

灵魂腐蚀 发表于 2015-2-4 00:04:40

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

小妖女 发表于 2015-2-5 15:34:17

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

仓酷云 发表于 2015-2-10 01:40:33

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

若天明 发表于 2015-2-20 09:51:42

自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

柔情似水 发表于 2015-2-28 13:45:45

Java 编程语言的风格十分接近C、C++语言。

活着的死人 发表于 2015-3-3 23:53:54

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

小魔女 发表于 2015-3-11 14:05:44

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

冷月葬花魂 发表于 2015-3-12 12:00:01

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

只想知道 发表于 2015-3-19 21:52:51

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

透明 发表于 2015-4-3 05:17:50

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
页: [1]
查看完整版本: JAVA网站制作之JSP数据库毗连池的需要性