CN107291747A - 一种数据库连接池的管理方法、装置及系统 - Google Patents
一种数据库连接池的管理方法、装置及系统 Download PDFInfo
- Publication number
- CN107291747A CN107291747A CN201610202032.9A CN201610202032A CN107291747A CN 107291747 A CN107291747 A CN 107291747A CN 201610202032 A CN201610202032 A CN 201610202032A CN 107291747 A CN107291747 A CN 107291747A
- Authority
- CN
- China
- Prior art keywords
- database
- application component
- information
- component
- connection pool
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据库连接池的管理方法、装置及系统,该方法包括:接收应用程序组件发送的申请数据库连接池的请求;判断共享数据库连接池组件中是否保存应用程序组件访问数据库的信息对应的数据库连接池;如果是,将应用程序组件访问数据库的信息对应的数据库连接池分配给应用程序组件;如果否,根据应用程序组件访问数据库的信息,在共享数据库连接池组件中建立应用程序组件访问数据库的信息对应的数据库连接池,并将建立的应用程序组件访问数据库的信息对应的数据库连接池分配给应用程序组件。本发明提高了访问数据库的速度以及应用程序与数据库之间连接的响应速度。
Description
技术领域
本发明涉及数据库应用技术领域,尤其涉及一种数据库连接池的管理方法、装置及系统。
背景技术
数据库连接池用于分配、管理和释放数据库连接,释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的连接遗漏,这项技术能明显提高对数据库操作的性能。
一般地,在数据库连接池中初始化多个数据库连接,以等待应用程序调用。一个应用程序每次从数据库连接池中调取一个数据库连接,此时被调取的数据库连接不可被其它应用程序调取,应用程序使用完了其调取的数据库连接后,将该数据库连接归还数据库连接池。当数据库连接池内的数据库连接全部被调取时,数据库连接池创建新的数据库连接,直到创建的数据库连接个数达到允许的最大数据库连接个数。
目前,常采用数据库连接池共享的方式为应用程序提供数据库连接,如图1所示,为现有多个应用程序共享一个数据库连接池的示意图,此时数据库连接池称为共享数据库连接池,共享数据库连接池安装在一个JVM(java虚拟机),每个应用程序分别安装在不同的JVM,各个应用程序与共享数据库连接池分别安装在不同的JVM中,此时,任一应用程序调取共享数据库连接池中的数据库连接时,需要通过特定的协议和接口,与共享数据库连接池通信。
但是,应用程序通过协议或者接口的方式来与共享数据库连接池建立连接,从而达到访问数据库的目的,这势必会影响应用程序与数据库之间连接的响应速度。
发明内容
本发明提供一种数据库连接池的管理方法、装置及系统,用以解决现有技术中的应用程序通过协议或者接口的方式来与共享数据库连接池建立连接,而带来的影响应用程序与数据库之间连接的响应速度的问题。
一种数据库连接池的管理方法,包括:
接收应用程序组件发送的从共享数据库连接池组件中申请数据库连接池的请求,所述申请数据库连接池的请求中携带所述应用程序组件访问数据库的信息,所述应用程序组件以及所述共享数据库连接池组件分别以开放服务网关发起者OSGI组件的形式预先部署在同一OSGI框架中;
判断所述共享数据库连接池组件中是否保存所述应用程序组件访问数据库的信息对应的数据库连接池;
如果是,将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件;
如果否,根据所述应用程序组件访问数据库的信息,在所述共享数据库连接池组件中建立所述应用程序组件访问数据库的信息对应的数据库连接池,并将建立的所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件。
所述方法中,根据所述应用程序组件访问数据库的信息,在所述共享数据库连接池组件中建立所述应用程序组件访问数据库的信息对应的数据库连接池,具体包括:
将所述应用程序组件访问数据库的信息注册到所述共享数据库连接池组件的注册表中,得到所述应用程序组件访问数据库的信息对应的数据库连接池;并
将得到的所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数,与所述应用程序组件访问数据库的信息,对应存储到所述共享数据库 连接池组件的注册表中,所述数据库连接池的引用次数是指该数据库连接池在被应用程序组件申请后被分配给应用程序组件的次数。
本发明实施例,通过在注册表中注册访问数据库的信息实现建立数据库连接池,并可以实时记录该数据库连接池被分配给应用程序组件的次数,从而便于维护共享数据库连接池组件中的数据库连接池。
所述方法中,所述申请数据库连接池的请求中还携带所述应用程序组件的标识,则,确定将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件后,该方法进一步包括:
将所述应用程序组件的标识与所述应用程序组件访问数据库的信息,对应存储到所述共享数据库连接池组件的连接记录表中。
本发明实施例将应用程序组件的标识与访问数据库的信息对应存储到连接记录表,能够为共享数据库连接池组件的维护提供前提。
所述方法,进一步包括:
确定将建立的所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件之后,将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数加1,所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数的初始值为0。
本发明实施例,数据库连接池每被分配一次,该数据库连接池的引用次数就加一。
所述方法,还包括:
监听到所述应用程序组件释放所述应用程序组件访问数据库的信息对应的数据库连接池的消息时,将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数减1;
判断所述注册表中所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数是否为0;
如果是,删除所述连接记录表中对应存储的所述应用程序组件的标识以及 所述应用程序组件访问数据库的信息,并删除所述注册表中对应存储的所述应用程序组件访问数据库的信息以及所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数;
如果否,删除所述连接记录表中,对应存储的所述应用程序组件的标识与所述应用程序组件访问数据库的信息。
本发明实施例,既能够节省共享数据库连接池组件的资源,还能够达到实时更新注册表和连接记录表的目的,从而实现对共享数据库连接池组件的维护。
所述方法中,所述释放所述应用程序组件访问数据库的信息对应的数据库连接池的消息中携带所述应用程序组件的标识,则将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数减1,具体包括:
根据所述应用程序组件的标识,从所述连接记录表中查询所述应用程序组件的标识对应的访问数据库的信息;
根据查询到的访问数据库的信息,从所述注册表中查询该访问数据库的信息对应的引用次数,并将查询到的引用次数减1。
本发明实施例,通过释放数据库连接池消息中的应用程序组件标识、连接记录表以及注册表,实现了对数据库连接池组件中的数据库连接池的更新。
所述方法中,判断所述共享数据库连接池组件中是否保存所述应用程序组件访问数据库的信息对应的数据库连接池,具体包括:
查询所述共享数据库连接池组件的注册表或者连接记录表中是否保存有所述应用程序组件访问数据库的信息;
如果是,确定所述共享数据库连接池组件中保存所述应用程序组件访问数据库的信息对应的数据库连接池;
如果否,确定所述共享数据库连接池组件中未保存所述应用程序组件访问数据库的信息对应的数据库连接池。
本发明实施例可通过判断注册表或者连接记录表中是否保存应用程序组 件访问数据库的信息,确定共享数据库连接池组件中是否保存应用程序组件访问数据库的信息对应的数据库连接池。
本发明还提供一种数据库连接池的管理装置,包括:
接收单元,用于接收应用程序组件发送的从共享数据库连接池组件中申请数据库连接池的请求,所述申请数据库连接池的请求中携带所述应用程序组件访问数据库的信息,所述应用程序组件以及所述共享数据库连接池组件分别以开放服务网关发起者OSGI组件的形式预先部署在同一OSGI框架中;
判断单元,用于判断所述共享数据库连接池组件中是否保存所述应用程序组件访问数据库的信息对应的数据库连接池;
分配单元,用于在所述判断单元判断是的情况下,将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件;
建立单元,用于在所述判断单元判断否的情况下,根据所述应用程序组件访问数据库的信息,在所述共享数据库连接池组件中建立所述应用程序组件访问数据库的信息对应的数据库连接池,并将建立的所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件。
所述装置中,所述建立单元在根据所述应用程序组件访问数据库的信息,在所述共享数据库连接池组件中建立所述应用程序组件访问数据库的信息对应的数据库连接池时,具体用于:
将所述应用程序组件访问数据库的信息注册到所述共享数据库连接池组件的注册表中,得到所述应用程序组件访问数据库的信息对应的数据库连接池;并
将得到的所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数,与所述应用程序组件访问数据库的信息,对应存储到所述共享数据库连接池组件的注册表中,所述数据库连接池的引用次数是指该数据库连接池在被应用程序组件申请后被分配给应用程序组件的次数。
所述装置,还包括:
存储单元,用于在所述申请数据库连接池的请求中还携带所述应用程序组件的标识,并确定将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件后,将所述应用程序组件的标识与所述应用程序组件访问数据库的信息,对应存储到所述共享数据库连接池组件的连接记录表中。
所述装置,进一步包括:
监控单元,用于确定将建立的所述应用程序组件访问数据库的信息对应数据库连接池分配给所述应用程序组件之后,将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数加1,所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数的初始值为0;
监听到所述应用程序组件释放所述应用程序组件访问数据库的信息对应的数据库连接池的消息时,将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数减1;
判断所述注册表中所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数是否为0;
如果是,删除所述连接记录表中存储的所述应用程序组件的标识以及所述应用程序组件访问数据库的信息,并删除所述注册表中存储的所述应用程序组件访问数据库的信息以及所述应用程序组件对应的数据库连接池的引用次数;
如果否,删除所述连接记录表中,所述应用程序组件的标识与所述应用程序组件访问数据库的信息。
所述装置,所述释放所述应用程序组件访问数据库的信息对应的数据库连接池的消息中携带所述应用程序组件的标识,则所述监控单元在将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数减1时,具体用于:
根据所述应用程序组件的标识,从所述连接记录表中查询所述应用程序组件的标识对应的访问数据库的信息;
根据查询到的访问数据库的信息,从所述注册表中查询该访问数据库的信息对应的引用次数,并将查询到的引用次数减1。
所述装置中,所述判断单元具体用于:
查询所述共享数据库连接池组件的注册表或者连接记录表中是否保存有所述应用程序组件访问数据库的信息;
如果是,确定所述共享数据库连接池组件中保存所述应用程序组件访问数据库的信息对应的数据库连接池;
如果否,确定所述共享数据库连接池组件中未保存所述应用程序组件访问数据库的信息对应的数据库连接池。
本发明还提供一种数据库连接池的管理系统,包括:
应用程序组件,用于向共享数据库连接池组件发送申请数据库连接池的请求,所述申请数据库连接池的请求中携带所述应用程序组件访问数据库的信息,所述应用程序组件以及所述共享数据库连接池组件分别以开放服务网关发起者OSGI组件的形式预先部署在同一OSGI框架中;
共享数据库连接池组件,用于接收应用程序组件发送的从共享数据库连接池组件中申请数据库连接池的请求,判断所述共享数据库连接池组件中是否保存所述应用程序组件访问数据库的信息对应的数据库连接池;如果是,将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件;如果否,根据所述应用程序组件访问数据库的信息,在所述共享数据库连接池组件中建立所述应用程序组件访问数据库的信息对应的数据库连接池,并将建立的所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件。
利用本发明实施例提供的数据库连接池的管理方法、装置及系统,具有以下有益效果:
通过在同一JVM中搭建OSGI框架,将应用程序以OSGI组件的形式部署在OSGI框架中,并在OSGI框架中部署共享数据库连接池组件,在该共享数据库连接池组件中,根据应用程序组件访问数据库的信息建立数据库连接池,当不同应用程序组件访问数据库的信息相同时,可实现数据库数据库连接池的 共享,可以有效避免数据库连接池资源的浪费,由于应用程序组件和共享数据库连接池组件都为OSGI框架中的OSGI组件,应用程序组件和共享数据库连接池组件之间通过服务的方式进行交互,从而可以有效的节省开发资源。此外,本发明实施例使得共享数据库连接池组件与各个应用程序组件之间通过服务的方式通信,从而能够在同一JVM中各个应用程序组件共享一个数据库连接池组件,相比于现有技术的位于不同JVM中的应用程序通过协议或者接口的方式来与另一JVM下的共享数据库连接池通信的方式,在一定程度上提高了应用程序与数据库连接池建立连接的速度,从而在一定程度上提高了应用程序访问数据库的速度,并提高了应用程序与数据库之间连接的响应速度。
附图说明
图1为现有技术提供的多个应用程序共享数据库连接池的示意图;
图2为本发明实施例提供的数据库连接池的管理方法流程图;
图3为本发明实施例提供的多个应用程序组件与共享数据库连接池组件的连接示意图;
图4为本发明实施例提供的对共享数据库连接池组件中的数据库连接池进行维护的方法流程图;
图5为本发明实施例提供的将访问数据库的信息对应的数据库连接池的引用次数减1的方法流程图;
图6为本发明实施例提供的判断共享数据库连接池组件中是否保存访问数据库的信息对应的数据库连接池的方法流程图;
图7为本发明实施例提供的实施例一的实施过程流程图;
图8为本发明实施例提供的实施例二的实施过程流程图;
图9为本发明实施例提供的应用程序组件与共享数据库连接池组件的连接示意图;
图10为本发明实施例提供的实施例三的实施过程流程图;
图11为本发明实施例提供的数据库连接池的管理装置示意图之一;
图12为本发明实施例提供的数据库连接池的管理装置示意图之二;
图13为本发明实施例提供的数据库连接池的管理装置示意图之三。
图14为本发明实施例提供的数据库连接池的管理系统示意图。
具体实施方式
下面结合附图和实施例对本发明提供的数据库连接池的管理方法、装置及系统进行更详细地说明。
本发明实施例提供一种数据库连接池的管理方法,如图2所示,包括:
步骤101,接收应用程序组件发送的从共享数据库连接池组件中申请数据库连接池的请求,所述申请数据库连接池的请求中携带所述应用程序组件访问数据库的信息,所述应用程序组件以及所述共享数据库连接池组件分别以OSGI组件的形式预先部署在同一OSGI框架中。
具体的,申请数据库连接池的请求中携带应用程序组件访问数据库的信息,访问数据库的信息包括:需要访问的数据库的驱动类标识、URL地址、用户名和密码等信息。本发明实施例中的应用程序组件所要访问的数据库优选为引用关系型数据库,也可以为其它类型的数据库。引用关系型数据库包括oracle、mysql以及其他。具体的,每个引用关系型数据库可对应一个数据库的驱动类标识。
一个共享数据库连接池组件中可以包括多个数据库连接池,接收到应用程序组件发送的从共享数据库连接池组件中申请数据库连接池的请求时,解析该申请数据库连接池的请求,从而获取申请数据库连接池的请求中携带的应用程序组件访问数据库的信息。
OSGI的英文全称为Open Services Gateway Initiative,中文全称为开放服务网关发起者。预先在一个JVM中搭建OSGI框架,比如ServiceMix平台,并预先将各个应用程序以OSGI组件的形式部署在该OSGI框架中,即,本发明实施例中的应用程序组件和共享数据库连接池组件为同一OSGI框架中的不同 OSGI组件,并且,不同的应用程序对应不同的OSGI组件,本发明实施例中的共享数据连接池组件为一个OSGI组件,该共享连接池组件中可包括多个数据库连接池。该OSGI框架中的每个应用程序组件均可向共享数据库连接池组件发送申请数据库连接池的请求,并且,多个应用程序组件可同时向共享数据库连接池组件发送申请数据库连接池的请求。
OSGI框架中,OSGI组件之间通过服务的方式相互通信,服务分为发布服务和引用服务,本发明实施例中应用程序组件申请数据库连接池的请求可以理解为发布申请数据库连接池的服务,即可以理解为应用程序组件通过发布服务的方式与共享数据库连接池组件通信;共享数据库连接池组件引用应用程序组件发布的申请数据库连接池的服务,即可以理解为共享数据库连接池组件通过引用服务的方式与应用程序组件通信。如图3所示为本发明实施例提供的多个应用程序组件以服务的方式与共享数据库连接池组件的连接示意图,其中,应用程序组件通过该应用程序组件访问数据库的信息对应的数据库连接池访问图3中的数据库。
步骤102,判断所述共享数据库连接池组件中是否保存所述应用程序组件访问数据库的信息对应的数据库连接池,如果是,执行步骤103,否则,执行步骤104。
具体的,所述应用程序组件访问数据库的信息对应的数据库连接池即该应用程序组件申请的数据库连接池。如果共享数据库连接池组件中已经保存该应用程序组件访问数据库的信息对应的数据库连接池,将该数据库连接池分配给该应用程序组件即可。
本发明实施例中的访问数据库的信息与共享数据库连接池组件中的数据库连接池一一对应,具体的,如果两个应用程序组件访问数据库的信息相同,则这两个应用程序组件申请的数据库连接池相同。
其中,针对每个应用程序组件,确定共享数据库连接池组件中保存该应用程序组件访问数据库的信息时,确定该共享数据库连接池组件中保存该应用程 序组件访问数据库的信息对应的数据库连接池,即,确定共享数据库连接池组件中保存该应用程序组件申请的数据库连接池;否则,确定该共享数据库连接池组件中未保存该应用程序组件访问数据库的信息对应的数据库连接池。
优选地,本发明实施例共享数据库连接池组件在初始状态为空,即,在未收到任何应用程序组件发送的申请数据库连接池的请求时,该共享数据库连接池组件中未保存任何数据库连接池,当然,共享数据库连接池组件在初始也可预先保存常见应用程序组件访问数据库的信息对应的数据库连接池,这里不做限定。
步骤103,将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件。
步骤104,根据所述应用程序组件访问数据库的信息,在所述共享数据库连接池组件中建立所述应用程序组件访问数据库的信息对应的数据库连接池,并将建立的所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件。
具体的,一个应用程序组件可通过不同的访问数据库的信息申请不同的数据库连接池,并通过申请的数据库连接池访问该数据库连接池对应的数据库,,其中,一条访问数据库的信息对应一个数据库连接池。在为应用程序组件分配一个数据库连接池后,如果该应用程序组件需要再次访问该数据库连接池,不需再次向共享数据库连接池组件发送申请数据库连接池的请求,而是直接通过已分配的数据库连接池访问数据库;如果该应用程序组件已经释放其已申请的一个数据库连接池,则该应用程序组件再次访问该数据库连接池对应的数据库时,需要向共享数据库连接池组件发送申请数据库连接池的请求,以获取数据连接池。即,本发明实施例,针对每个应用程序组件,从该应用程序组件成功申请数据库连接池后,到该应用程序组件释放其申请的数据库连接池期间,该应用程序组件不会再次向共享数据库连接池组件发送申请数据库连接池的请求。为应用程序组件分配数据库连接池后,应用程序组件可通过该数据库连接 池访问数据库,具体应用程序组件通过该数据库连接池访问数据库的方式可参见现有方式,这里不做详述。
本发明实施例的执行主体可以为共享数据库连接池组件,可以为位于共享数据库连接池组件内的模块,也可以为独立于共享数据库连接池组件的第三方设备或模块。确定共享数据库连接池组件中未保存该应用程序组件访问数据库的信息对应的数据库连接池时,在共享数据库连接池组件中建立该应用程序组件访问数据库的信息对应的数据库连接池,并将该新建的数据库连接池分配给该应用程序组件。
本发明实施例,通过在同一JVM中搭建OSGI框架,将应用程序以OSGI组件的形式部署在OSGI框架中,并在OSGI框架中部署共享数据库连接池组件,在该共享数据库连接池组件中,根据应用程序组件访问数据库的信息建立数据库连接池,当不同应用程序组件访问数据库的信息相同时,可实现数据库连接池的共享,可以有效避免数据库连接池资源的浪费,由于应用程序组件和共享数据库连接池组件都为OSGI框架中的OSGI组件,应用程序组件和共享数据库连接池组件之间通过服务的方式进行交互,从而可以有效的节省开发资源。此外,本发明实施例使得共享数据库连接池组件与各个应用程序组件之间通过服务的方式通信,从而能够在同一JVM中各个应用程序组件共享一个数据库连接池组件,相比于现有技术的位于不同JVM中的应用程序通过协议或者接口的方式来与另一JVM下的共享数据库连接池通信的方式,在一定程度上提高了应用程序与数据库连接池建立连接的速度,大概速度能提升十几倍,从而在一定程度上提高了应用程序访问数据库的速度,并提高了应用程序与数据库之间连接的响应速度。
本发明实施例在OSGI框架中部署共享数据库连接池组件的方式为:1、将OSGI形式的共享数据库连接池组件直接拷贝到ServiceMix平台(一种OSGI框架)的热部署目录下完成共享数据库连接池组件的部署;2、借助ServiceMix平台的Features命令,完成共享数据库连接池组件的热部署。在OSGI框架中 部署应用程序组件的方式与在OSGI框架中部署共享数据库连接池组件的方式相同,这里不做赘述。
优选地,步骤104中,根据所述应用程序组件访问数据库的信息,在所述共享数据库连接池组件中建立所述应用程序组件访问数据库的信息对应的数据库连接池,具体包括:
将所述应用程序组件访问数据库的信息注册到所述共享数据库连接池组件的注册表中,得到所述应用程序组件访问数据库的信息对应的数据库连接池;并
将得到的所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数,与所述应用程序组件访问数据库的信息,对应存储到所述共享数据库连接池组件的注册表中,所述数据库连接池的引用次数是指该数据库连接池在被应用程序组件申请后被分配给应用程序的次数。
具体的,将应用程序组件访问数据库的信息注册到所述共享数据库连接池组件的注册表中,即为建立数据库连接池的过程,具体通过将应用程序组件访问数据库的信息存储到注册表的任一空闲表项中,实现将应用程序组件访问数据库的信息注册到所述共享数据库连接池组件的注册表中。
得到应用程序组件访问数据库的信息对应的数据库连接池后,将该数据库连接池的引用次数与该应用程序组件访问数据库的信息对应存储,并将此时的数据库连接池的引用次数确定为初始值,即,初始建立数据库连接池时,引用次数为初始值,本发明实施例优选将初始值设定为0,也可以为其它值,这里不做限定。
本发明实施例在将得到的数据库连接池的引用次数,与所述应用程序组件访问数据库的信息对应存储到所述共享数据库连接池组件的注册表中之后,得到应用程序组件访问数据库的信息与应用程序组件访问数据库的信息对应的数据库连接池的引用次数的对应关系。为应用程序组件分配数据库连接池后,该数据库连接池的引用次数加1。如果多个应用程序组件访问数据库的信息相 同,则这多个应用程序组件对应同一数据库连接池,此时,多个应用程序组件对应注册表中的同一条访问数据库的信息与数据库连接池的引用次数的对应关系,即,本发明实施例中,注册表中的访问数据库的信息与数据库连接池一一对应。
本发明实施例,在接收到应用程序组件发送的申请数据库连接池的请求时,解析申请数据库连接池的请求,得到该请求中携带的应用程序组件访问数据库的信息,通过将应用程序组件访问数据库的信息注册到共享数据库连接池组件的注册表中,实现数据库连接池的创建。在建立数据库连接池后,将该建立的数据库连接池的引用次数存储到注册表中,可便于后期对共享数据库连接池组件中的共享数据库连接池的维护。
进一步优选地,所述申请数据库连接池的请求中还携带所述应用程序组件的标识,则确定将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件后,进一步包括:
将所述应用程序组件的标识与所述应用程序组件访问数据库的信息,对应存储到所述共享数据库连接池组件的连接记录表中。
具体的,应用程序组件的标识可以为应用程序自身的标识,也可以为该应用程序组件对应的OSGI组件的标识,这里不做限定。
本发明实施例,在建立应用程序组件对应的数据库连接池后,进一步根据申请数据库连接池请求中携带的应用程序组件的标识以及访问数据库的信息,将应用程序组件的标识与访问数据库的信息对应存储到连接记录表,能够为共享数据库连接池组件的维护提供前提。本发明实施例在共享数据库连接池组件中未保存应用程序组件访问数据库的信息对应的数据库连接池的场景下,确定建立了应用程序组件对应的数据库连接池后实施。
在共享数据库连接池组件中保存应用程序组件访问数据库的信息对应的数据库连接池,并且,确定该应用程序组件为第一次申请其所申请的数据库连接池时,该数据库连接池的引用次数加1,并且将该应用程序组件的标识与该 应用程序组件访问数据库的信息,对应存储到共享数据库连接池组件的连接记录表中。
具体的,实时记录各个数据库连接池在被应用程序组件申请后被分配给应用程序组件的次数,优选地,确定将建立的所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件之后,进一步包括:
将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数加1,所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数的初始值为0。
具体的,在为应用程序组件建立该应用程序组件访问数据库的信息对应的数据库连接池后,为该应用程序组件分配建立的数据库连接池,并将该数据库连接池的引用次数加1,即,数据库连接池每被分配一次,该数据库连接池的引用次数就加一,具体实现时,可为每个数据库连接池设置一计数器,将该计数器的值作为该数据库连接池的引用次数。针对每个应用程序组件,该应用程序组件向数据库连接池组件发送申请数据库连接池的请求,并且,为该应用程序组件分配相应的数据库连接池后,该被分配给应用程序组件的数据库连接池的引用次数加1,并且,该应用程序组件不会再次向共享数据库连接池组件发送申请已分配给该应用程序组件的数据库连接池的请求;当该应用程序组件释放已分配给该应用程序组件的数据库连接池后,该应用程序组件可再次向共享数据库连接池发送申请该被释放的数据库连接池的请求。
优选地,本发明实施例提供的数据库连接池的管理方法,如图4所示,还包括:
步骤201,监听到所述应用程序组件释放所述应用程序组件访问数据库的信息对应的数据库连接池的消息时,将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数减1。
具体的,应用程序组件从OSGI框架中卸载时,或者应用程序组件关闭时,或者监听到应用程序组件在一定时长内未执行任何操作时,应用程序组件会发 出释放其申请的数据库连接池的消息,本发明实施例实时监听已申请数据库连接池的应用程序组件是否发出释放数据库连接池的消息,如果是,将该应用程序组件访问数据库的信息对应的数据库连接池的引用次数减1。其中,优选地,设定应用程序组件从OSGI框架中卸载时,发出释放其申请的数据库连接池的消息。
步骤202,判断所述注册表中所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数是否为0,如果是,执行步骤203,否则,执行步骤204。
步骤203,删除所述连接记录表中对应存储的所述应用程序组件的标识以及所述应用程序组件访问数据库的信息,并删除所述注册表中对应存储的所述应用程序组件访问数据库的信息以及所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数。
具体的,当数据库连接池的引用次数为0(初始值)时,说明该数据库连接池已经没有应用程序组件在使用,此时,可删除注册表中对应存储的该数据库连接池的引用次数以及该数据库连接池对应的访问数据库的信息,从而达到从共享数据库连接池组件中删除该数据库连接池的目的,进而节省共享数据库连接池组件的资源。当应用程序组件释放其申请的数据库连接池后,从连接记录表中删除该应用程序组件的标识以及该应用程序组件访问数据库的信息,从而节省共享数据库连接池组件的资源。
步骤204,删除所述连接记录表中,对应存储的所述应用程序组件的标识与所述应用程序组件访问数据库的信息。
具体的,当应用程序组件所申请的数据库连接池的引用次数不为0时,只删除连接记录表中对应存储的该应用程序组件的标识以及该应用程序组件访问数据库的信息,从而节省共享数据库连接池组件的资源。
本发明实施例,既能够节省共享数据库连接池组件的资源,还能够达到实时更新注册表和连接记录表的目的,从而实现对共享数据库连接池组件的维 护。
在应用程序组件从OSGI框架中卸载时,发出释放其申请的数据库连接池的消息的场景下,优选地,所述释放所述应用程序组件访问数据库的信息对应的数据库连接池的消息中携带所述应用程序组件的标识,则步骤201中,将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数减1,如图5所示,具体包括:
步骤301,根据所述应用程序组件的标识,从所述连接记录表中查询所述应用程序组件的标识对应的访问数据库的信息。
步骤302,根据查询到的访问数据库的信息,从所述注册表中查询该访问数据库的信息对应的引用次数,并将查询到的引用次数减1。
由于连接记录表中记录了已经被分配数据库连接池的应用程序组件的标识,因此,当释放数据库连接池的消息中携带应用程序组件的标识时,可通过解析获取该消息中的应用程序组件的标识,从而确定释放数据库连接池的应用程序组件。根据该释放数据库连接池的应用程序组件的标识,从连接记录表中查询该应用应用程序组件标识对应的访问数据库的基本信息;再根据该访问数据库的信息,查询注册表中,该访问数据库的信息对应的数据库连接池的引用次数,并将查询到的数据库连接池的引用次数减1。
本发明实施例,通过释放数据库连接池消息中的应用程序组件标识、连接记录表以及注册表,实现了对共享数据库连接池组件中的数据库连接池的更新。
本发明实施例中的应用程序组件释放数据库连接池的消息中还可以携带该应用程序组件访问数据库的信息,此时,从注册表中查询该消息中携带的应用程序组件访问数据库的信息对应的数据库连接池的引用次数,并将查询到的次数减1。
优选地,步骤102,判断所述共享数据库连接池组件中是否保存所述应用程序组件访问数据库的信息对应的数据库连接池,如图6所示,具体包括:
步骤401,查询所述共享数据库连接池组件的注册表或者连接记录表中是否保存有所述应用程序组件访问数据库的信息,如果是,执行步骤402,否则,执行步骤403。
步骤402,确定所述共享数据库连接池组件中保存所述应用程序组件访问数据库的信息对应的数据库连接池。
步骤403,确定所述共享数据库连接池组件中未保存所述应用程序组件访问数据库的信息对应的数据库连接池。
具体的,本发明实施例可通过判断注册表或者连接记录表中是否保存应用程序组件访问数据库的信息,确定共享数据库连接池组件中是否保存应用程序组件访问数据库的信息对应的数据库连接池。
下面结合具体实施例说明本发明实施例提供的数据库连接池的管理方法。
实施例一
如图7所示,本发明实施例提供的数据库连接池的管理方法的其中一个具体实施例,包括:
步骤501,共享数据库连接池组件接收OSGI框架中的应用程序组件以服务的方式发送的申请数据库连接的请求,该请求中携带该应用程序组件访问数据库的信息。
步骤502,共享数据库连接池组件判断共享数据库连接池组件的注册表中是否保存该应用程序组件访问数据库的信息对应的数据库连接池,如果是,执行步骤503,否则,执行步骤504。
步骤503,共享数据库连接池组件确定保存了该应用程序组件访问数据库的信息对应的数据库连接池,并将该数据库连接池分配给该应用程序组件。
步骤504,共享数据库连接池组件确定未保存该应用程序组件访问数据库的信息对应的数据库连接池,并将该应用程序组件访问数据库的信息注册到所述共享数据库连接池组件的注册表中,得到该应用程序组件访问数据库的信息对应的数据库连接池,并,将得到的数据库连接池的引用次数,与该应用程序 组件访问数据库的信息,对应存储到共享数据库连接池组件的注册表中。
步骤505,共享数据库连接池组件将得到的该应用程序组件访问数据库的信息对应的数据库连接池分配给该应用程序组件。
步骤506,共享数据库连接池组件将该应用程序组件访问数据库的信息对应的数据库连接池的引用次数加1。
实施例二
如图8所示,本发明实施例提供的数据库连接池的管理方法的其中一个具体实施例,包括:
步骤601,共享数据库连接池组件接收OSGI框架中的应用程序组件以服务的方式发送的申请数据库连接的请求,该请求中携带该应用程序组件的标识以及该应用程序组件访问数据库的信息。
步骤602,共享数据库连接池组件判断共享数据库连接池组件的注册表中是否保存该应用程序组件访问数据库的信息对应的数据库连接池,如果是,执行步骤603,否则,执行步骤604。
步骤603,共享数据库连接池组件确定保存了该应用程序组件访问数据库的信息对应的数据库连接池,并将该数据库连接池分配给该应用程序组件。
步骤604,共享数据库连接池组件确定未保存该应用程序组件访问数据库的信息对应的数据库连接池,并将该应用程序组件访问数据库的信息注册到所述共享数据库连接池组件的注册表中,得到该应用程序组件访问数据库的信息对应的数据库连接池,并将得到的数据库连接池的引用次数,与该应用程序组件访问数据库的信息,对应存储到共享数据库连接池组件的注册表中。
步骤605,共享数据库连接池组件将建立的该应用程序组件访问数据库的信息对应的数据库连接池分配给该应用程序组件。
步骤606,共享数据库连接池组件将该应用程序组件访问数据库的信息对应的数据库连接池的引用次数加1,将该应用程序组件的标识与该应用程序组件访问数据库的信息,对应存储到共享数据库连接池组件的连接记录表中。
图9为本发明实施例提供的应用程序组件与共享数据库连接池组件的连接示意图,图9只是一种示例,只举出一个应用程序组件与共享数据库连接池组件的连接示意图,本发明实施例可以是多个应用程序组件同时从图9的共享数据库连接池组件中申请数据库连接池。
实施例三
如图10所示,为本发明实施例提供的数据库连接池的管理方法中对共享数据库连接池组件进行维护的方法,包括:
步骤701,共享数据库连接池组件判断是否监听到应用程序组件释放所述应用程序组件访问数据库的信息对应的数据库连接池的消息,如果是,执行步骤702,否则,执行步骤701。
步骤702,共享数据库连接池组件解析监听到的消息中携带的应用程序组件的标识。
步骤703,共享数据库连接池组件根据解析到的应用程序组件的标识,从连接记录表中查询该应用程序组件的标识对应的访问数据库的信息。
步骤704,共享数据库连接池组件根据查询到的访问数据库的信息,从注册表中查询该访问数据库的信息对应的数据库连接池的引用次数,并将查询到的该访问数据库的信息对应的数据库连接池的引用次数减1,得到更新后的引用次数。
步骤705,共享数据库连接池组件判断更新后引用次数是否为0,如果是,执行步骤706,否则,执行步骤707。
步骤706,删除连接记录表中对应存储的该应用程序组件的标识以及该应用程序组件访问数据库的信息,并删除注册表中对应存储的该应用程序组件访问数据库的信息以及该应用程序组件对应的数据库连接池的引用次数。
步骤707,删除连接记录表中,对应存储的该应用程序组件的标识与该应用程序组件访问数据库的信息。
应用程序组件与共享数据库连接池组件的连接示意图可参见图9。
具体的,针对每个数据库连接池,确定该数据库连接池的引用次数为0时,从共享数据库连接池组件中删除与该数据库连接池对应的所有的信息,从而节省共享数据库连接池组件的资源。
基于与本发明实施例提供的数据库连接池的管理方法同样的发明构思,本发明实施例还提供一种数据库连接池的管理装置,如图11所示,包括:
接收单元801,用于接收应用程序组件发送的从共享数据库连接池组件中申请数据库连接池的请求,所述申请数据库连接池的请求中携带所述应用程序组件访问数据库的信息,所述应用程序组件以及所述共享数据库连接池组件分别以开放服务网关发起者OSGI组件的形式预先部署在同一OSGI框架中;
判断单元802,用于判断所述共享数据库连接池组件中是否保存所述应用程序组件访问数据库的信息对应的数据库连接池;
分配单元803,用于在所述判断单元判断是的情况下,将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件;
建立单元804,用于在所述判断单元判断否的情况下,根据所述应用程序组件访问数据库的信息,在所述共享数据库连接池组件中建立所述应用程序组件访问数据库的信息对应的数据库连接池,并将建立的所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件。
优选地,所述装置中,所述建立单元在根据所述应用程序组件访问数据库的信息,在所述共享数据库连接池组件中建立所述应用程序组件访问数据库的信息对应的数据库连接池时,具体用于:
将所述应用程序组件访问数据库的信息注册到所述共享数据库连接池组件的注册表中,得到所述应用程序组件访问数据库的信息对应的数据库连接池;并
将得到的所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数,与所述应用程序组件访问数据库的信息,对应存储到所述共享数据库连接池组件的注册表中,所述数据库连接池的引用次数是指该数据库连接池在 被应用程序组件申请后被分配给应用程序组件的次数。
优选地,如图12所示,所述装置,还包括:
存储单元805,用于在所述申请数据库连接池的请求中还携带所述应用程序组件的标识,并确定将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件后,将所述应用程序组件的标识与所述应用程序组件访问数据库的信息,对应存储到所述共享数据库连接池组件的连接记录表中。
优选地,如图13所示,所述装置,进一步包括:
监控单元806,用于确定将建立的所述应用程序组件访问数据库的信息对应数据库连接池分配给所述应用程序组件之后,将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数加1,所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数的初始值为0;
监听到所述应用程序组件释放所述应用程序组件访问数据库的信息对应的数据库连接池的消息时,将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数减1;
判断所述注册表中所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数是否为0;
如果是,删除所述连接记录表中对应存储的所述应用程序组件的标识以及所述应用程序组件访问数据库的信息,并删除所述注册表中对应存储的所述应用程序组件访问数据库的信息以及所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数;
如果否,删除所述连接记录表中,对应存储的所述应用程序组件的标识与所述应用程序组件访问数据库的信息。
优选地,所述释放所述应用程序组件访问数据库的信息对应的数据库连接池的消息中携带所述应用程序组件的标识,则所述监控单元在将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数减1时,具体用于:
根据所述应用程序组件的标识,从所述连接记录表中查询所述应用程序组件的标识对应的访问数据库的信息;
根据查询到的访问数据库的信息,从所述注册表中查询该访问数据库的信息对应的引用次数,并将查询到的引用次数减1。
优选地,所述装置中,所述判断单元具体用于:
查询所述共享数据库连接池组件的注册表或者连接记录表中是否保存有所述应用程序组件访问数据库的信息;
如果是,确定所述共享数据库连接池组件中保存所述应用程序组件访问数据库的信息对应的数据库连接池;
如果否,确定所述共享数据库连接池组件中未保存所述应用程序组件访问数据库的信息对应的数据库连接池。
基于与本发明实施例提供的数据库连接池的管理方法同样的发明构思,本发明实施例还提供一种数据库连接池的管理系统,如图14所示,包括:
应用程序组件901,用于向共享数据库连接池组件发送申请数据库连接池的请求,所述申请数据库连接池的请求中携带所述应用程序组件访问数据库的信息,所述应用程序组件以及所述共享数据库连接池组件分别以开放服务网关发起者OSGI组件的形式预先部署在同一OSGI框架中;
共享数据库连接池组件902,用于接收应用程序组件发送的从共享数据库连接池组件中申请数据库连接池的请求,判断所述共享数据库连接池组件中是否保存所述应用程序组件访问数据库的信息对应的数据库连接池;如果是,将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件;如果否,根据所述应用程序组件访问数据库的信息,在所述共享数据库连接池组件中建立所述应用程序组件访问数据库的信息对应的数据库连接池,并将建立的所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件。
优选地,所述系统中,所述共享数据库连接池组件在根据所述应用程序组 件访问数据库的信息,在所述共享数据库连接池组件中建立所述应用程序组件访问数据库的信息对应的数据库连接池时,具体用于:
将所述应用程序组件访问数据库的信息注册到所述共享数据库连接池组件的注册表中,得到所述应用程序组件访问数据库的信息对应的数据库连接池;并
将得到的所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数,与所述应用程序组件访问数据库的信息,对应存储到所述共享数据库连接池组件的注册表中,所述数据库连接池的引用次数是指该数据库连接池被应用程序组件申请后被分配给应用程序组件的次数。
优选地,所述系统中,所述共享数据库连接池组件,还用于:
在所述申请数据库连接池的请求中还携带所述应用程序组件的标识,并确定将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件后,将所述应用程序组件的标识与所述应用程序组件访问数据库的信息,对应存储到所述共享数据库连接池组件的连接记录表中。
优选地,所述系统中,所述共享数据库连接池组件进一步用于:
确定将建立的所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件之后,将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数加1,所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数的初始值为0。
优选地,所述系统中,所述共享数据库连接池组件还用于:
监听到所述应用程序组件释放所述应用程序组件访问数据库的信息对应的数据库连接池的消息时,将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数减1;
判断所述注册表中所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数是否为0;
如果是,删除所述连接记录表中对应存储的所述应用程序组件的标识以及 所述应用程序组件访问数据库的信息,并删除所述注册表中对应存储的所述应用程序组件访问数据库的信息以及所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数;
如果否,删除所述连接记录表中,对应存储的所述应用程序组件的标识与所述应用程序组件访问数据库的信息。
优选地,所述释放所述应用程序组件访问数据库的信息对应的数据库连接池的消息中携带所述应用程序组件的标识,则所述共享数据库连接池组件在将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数减1时,具体用于:
根据所述应用程序组件的标识,从所述连接记录表中查询所述应用程序组件的标识对应的访问数据库的信息;
根据查询到的访问数据库的信息,从所述注册表中查询该访问数据库的信息对应的引用次数,并将查询到的引用次数减1。
优选地,所述系统中,所述所述共享数据库连接池组件在判断所述共享数据库连接池组件中是否保存所述应用程序组件访问数据库的信息对应的数据库连接池时,具体用于:
查询所述共享数据库连接池组件的注册表或者连接记录表中是否保存有所述应用程序组件访问数据库的信息;
如果是,确定所述共享数据库连接池组件中保存所述应用程序组件访问数据库的信息对应的数据库连接池;
如果否,确定所述共享数据库连接池组件中未保存所述应用程序组件访问数据库的信息对应的数据库连接池。
利用本发明实施例提供的数据库连接池的管理方法、装置及系统,具有以下有益效果:通过在同一JVM中搭建OSGI框架,将应用程序以OSGI组件的形式部署在OSGI框架中,并在OSGI框架中部署共享数据库连接池组件,在该共享数据库连接池组件中,根据应用程序组件访问数据库的信息建立数据库 连接池,当不同应用程序组件访问数据库的信息相同时,可实现数据库数据库连接池的共享,可以有效避免数据库连接池资源的浪费,由于应用程序组件和共享数据库连接池组件都为OSGI框架中的OSGI组件,应用程序组件和共享数据库连接池组件之间通过服务的方式进行交互,从而可以有效的节省开发资源。此外,本发明实施例使得共享数据库连接池组件与各个应用程序组件之间通过服务的方式通信,从而能够在同一JVM中各个应用程序组件共享一个数据库连接池组件,相比于现有技术的位于不同JVM中的应用程序通过协议或者接口的方式来与另一JVM下的共享数据库连接池通信的方式,在一定程度上提高了应用程序与数据库连接池建立连接的速度,从而在一定程度上提高了应用程序访问数据库的速度,并提高了应用程序与数据库之间连接的响应速度。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (13)
1.一种数据库连接池的管理方法,其特征在于,包括:
接收应用程序组件发送的从共享数据库连接池组件中申请数据库连接池的请求,所述申请数据库连接池的请求中携带所述应用程序组件访问数据库的信息,所述应用程序组件以及所述共享数据库连接池组件分别以开放服务网关发起者OSGI组件的形式预先部署在同一OSGI框架中;
判断所述共享数据库连接池组件中是否保存所述应用程序组件访问数据库的信息对应的数据库连接池;
如果是,将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件;
如果否,根据所述应用程序组件访问数据库的信息,在所述共享数据库连接池组件中建立所述应用程序组件访问数据库的信息对应的数据库连接池,并将建立的所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件。
2.如权利要求1所述的方法,其特征在于,根据所述应用程序组件访问数据库的信息,在所述共享数据库连接池组件中建立所述应用程序组件访问数据库的信息对应的数据库连接池,具体包括:
将所述应用程序组件访问数据库的信息注册到所述共享数据库连接池组件的注册表中,得到所述应用程序组件访问数据库的信息对应的数据库连接池;并
将得到的所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数,与所述应用程序组件访问数据库的信息,对应存储到所述共享数据库连接池组件的注册表中,所述数据库连接池的引用次数是指该数据库连接池在被应用程序组件申请后被分配给应用程序组件的次数。
3.如权利要求2所述的方法,其特征在于,所述申请数据库连接池的请求中还携带所述应用程序组件的标识,则,确定将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件后,该方法进一步包括:
将所述应用程序组件的标识与所述应用程序组件访问数据库的信息,对应存储到所述共享数据库连接池组件的连接记录表中。
4.如权利要求3所述的方法,其特征在于,进一步包括:
确定将建立的所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件之后,将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数加1,所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数的初始值为0;
监听到所述应用程序组件释放所述应用程序组件访问数据库的信息对应的数据库连接池的消息时,将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数减1;
判断所述注册表中所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数是否为0;
如果是,删除所述连接记录表中对应存储的所述应用程序组件的标识以及所述应用程序组件访问数据库的信息,并删除所述注册表中对应存储的所述应用程序组件访问数据库的信息以及所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数;
如果否,删除所述连接记录表中,对应存储的所述应用程序组件的标识与所述应用程序组件访问数据库的信息。
5.如权利要求4所述的方法,其特征在于,所述释放所述应用程序组件访问数据库的信息对应的数据库连接池的消息中携带所述应用程序组件的标识,则将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数减1,具体包括:
根据所述应用程序组件的标识,从所述连接记录表中查询所述应用程序组件的标识对应的访问数据库的信息;
根据查询到的访问数据库的信息,从所述注册表中查询该访问数据库的信息对应的引用次数,并将查询到的引用次数减1。
6.如权利要求3所述的方法,其特征在于,判断所述共享数据库连接池组件中是否保存所述应用程序组件访问数据库的信息对应的数据库连接池,具体包括:
查询所述共享数据库连接池组件的注册表或者连接记录表中是否保存有所述应用程序组件访问数据库的信息;
如果是,确定所述共享数据库连接池组件中保存所述应用程序组件访问数据库的信息对应的数据库连接池;
如果否,确定所述共享数据库连接池组件中未保存所述应用程序组件访问数据库的信息对应的数据库连接池。
7.一种数据库连接池的管理装置,其特征在于,包括:
接收单元,用于接收应用程序组件发送的从共享数据库连接池组件中申请数据库连接池的请求,所述申请数据库连接池的请求中携带所述应用程序组件访问数据库的信息,所述应用程序组件以及所述共享数据库连接池组件分别以开放服务网关发起者OSGI组件的形式预先部署在同一OSGI框架中;
判断单元,用于判断所述共享数据库连接池组件中是否保存所述应用程序组件访问数据库的信息对应的数据库连接池;
分配单元,用于在所述判断单元判断是的情况下,将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件;
建立单元,用于在所述判断单元判断否的情况下,根据所述应用程序组件访问数据库的信息,在所述共享数据库连接池组件中建立所述应用程序组件访问数据库的信息对应的数据库连接池,并将建立的所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件。
8.如权利要求7所述的装置,其特征在于,所述建立单元在根据所述应用程序组件访问数据库的信息,在所述共享数据库连接池组件中建立所述应用程序组件访问数据库的信息对应的数据库连接池时,具体用于:
将所述应用程序组件访问数据库的信息注册到所述共享数据库连接池组件的注册表中,得到所述应用程序组件访问数据库的信息对应的数据库连接池;并
将得到的所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数,与所述应用程序组件访问数据库的信息,对应存储到所述共享数据库连接池组件的注册表中,所述数据库连接池的引用次数是指该数据库连接池在被应用程序组件申请后被分配给应用程序组件的次数。
9.如权利要求8所述的装置,其特征在于,还包括:
存储单元,用于在所述申请数据库连接池的请求中还携带所述应用程序组件的标识,并确定将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件后,将所述应用程序组件的标识与所述应用程序组件访问数据库的信息,对应存储到所述共享数据库连接池组件的连接记录表中。
10.如权利要求9所述的装置,其特征在于,进一步包括:
监控单元,用于确定将建立的所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件之后,将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数加1,所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数的初始值为0;
监听到所述应用程序组件释放所述应用程序组件访问数据库的信息对应的数据库连接池的消息时,将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数减1;
判断所述注册表中所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数是否为0;
如果是,删除所述连接记录表中对应存储的所述应用程序组件的标识以及所述应用程序组件访问数据库的信息,并删除所述注册表中对应存储的所述应用程序组件访问数据库的信息以及所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数;
如果否,删除所述连接记录表中,对应存储的所述应用程序组件的标识与所述应用程序组件访问数据库的信息。
11.如权利要求10所述的装置,其特征在于,所述释放所述应用程序组件访问数据库的信息对应的数据库连接池的消息中携带所述应用程序组件的标识,则所述监控单元在将所述应用程序组件访问数据库的信息对应的数据库连接池的引用次数减1时,具体用于:
根据所述应用程序组件的标识,从所述连接记录表中查询所述应用程序组件的标识对应的访问数据库的信息;
根据查询到的访问数据库的信息,从所述注册表中查询该访问数据库的信息对应的引用次数,并将查询到的引用次数减1。
12.如权利要求9所述的装置,其特征在于,所述判断单元具体用于:
查询所述共享数据库连接池组件的注册表或者连接记录表中是否保存有所述应用程序组件访问数据库的信息;
如果是,确定所述共享数据库连接池组件中保存所述应用程序组件访问数据库的信息对应的数据库连接池;
如果否,确定所述共享数据库连接池组件中未保存所述应用程序组件访问数据库的信息对应的数据库连接池。
13.一种数据库连接池的管理系统,其特征在于,包括:
应用程序组件,用于向共享数据库连接池组件发送申请数据库连接池的请求,所述申请数据库连接池的请求中携带所述应用程序组件访问数据库的信息,所述应用程序组件以及所述共享数据库连接池组件分别以开放服务网关发起者OSGI组件的形式预先部署在同一OSGI框架中;
共享数据库连接池组件,用于接收所述应用程序组件发送的从所述共享数据库连接池组件中申请数据库连接池的请求,判断所述共享数据库连接池组件中是否保存所述应用程序组件访问数据库的信息对应的数据库连接池;如果是,将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件;如果否,根据所述应用程序组件访问数据库的信息,在所述共享数据库连接池组件中建立所述应用程序组件访问数据库的信息对应的数据库连接池,并将所述应用程序组件访问数据库的信息对应的数据库连接池分配给所述应用程序组件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610202032.9A CN107291747A (zh) | 2016-03-31 | 2016-03-31 | 一种数据库连接池的管理方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610202032.9A CN107291747A (zh) | 2016-03-31 | 2016-03-31 | 一种数据库连接池的管理方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107291747A true CN107291747A (zh) | 2017-10-24 |
Family
ID=60087008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610202032.9A Pending CN107291747A (zh) | 2016-03-31 | 2016-03-31 | 一种数据库连接池的管理方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107291747A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109145061A (zh) * | 2018-07-26 | 2019-01-04 | 阿里巴巴集团控股有限公司 | 一种数据库分配会话对象的方法、数据库和服务器 |
CN111125223A (zh) * | 2019-12-20 | 2020-05-08 | 北京爱奇艺科技有限公司 | 一种数据库连接池更新方法及装置 |
CN112506965A (zh) * | 2020-12-03 | 2021-03-16 | 北京天融信网络安全技术有限公司 | 一种数据库管理装置及方法 |
CN113467966A (zh) * | 2021-05-31 | 2021-10-01 | 珠海大横琴科技发展有限公司 | 一种数据处理的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1510575A (zh) * | 2002-12-25 | 2004-07-07 | ����ͨѶ�ɷ�����˾ | 一种数据库连接的高效管理方法 |
CN101095109A (zh) * | 2004-12-31 | 2007-12-26 | Bea系统公司 | 多池管理器 |
CN103365929A (zh) * | 2012-04-10 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 一种数据库连接的管理方法及系统 |
-
2016
- 2016-03-31 CN CN201610202032.9A patent/CN107291747A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1510575A (zh) * | 2002-12-25 | 2004-07-07 | ����ͨѶ�ɷ�����˾ | 一种数据库连接的高效管理方法 |
CN1317653C (zh) * | 2002-12-25 | 2007-05-23 | 中兴通讯股份有限公司 | 一种数据库连接的高效管理方法 |
CN101095109A (zh) * | 2004-12-31 | 2007-12-26 | Bea系统公司 | 多池管理器 |
CN103365929A (zh) * | 2012-04-10 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 一种数据库连接的管理方法及系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109145061A (zh) * | 2018-07-26 | 2019-01-04 | 阿里巴巴集团控股有限公司 | 一种数据库分配会话对象的方法、数据库和服务器 |
CN111125223A (zh) * | 2019-12-20 | 2020-05-08 | 北京爱奇艺科技有限公司 | 一种数据库连接池更新方法及装置 |
CN111125223B (zh) * | 2019-12-20 | 2023-10-10 | 北京爱奇艺科技有限公司 | 一种数据库连接池更新方法及装置 |
CN112506965A (zh) * | 2020-12-03 | 2021-03-16 | 北京天融信网络安全技术有限公司 | 一种数据库管理装置及方法 |
CN113467966A (zh) * | 2021-05-31 | 2021-10-01 | 珠海大横琴科技发展有限公司 | 一种数据处理的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1649324B (zh) | 操作带有代理的开放api网络的方法和装置 | |
CN101222374B (zh) | 一种实现业务升级的系统、装置及方法 | |
CN107291747A (zh) | 一种数据库连接池的管理方法、装置及系统 | |
CN103516759B (zh) | 云系统资源管理方法、云呼叫中心坐席管理方法和云系统 | |
CN110677383B (zh) | 防火墙开墙方法、装置、存储介质及计算机设备 | |
CN104123265A (zh) | 一种众核间通信方法及系统 | |
CN107426274A (zh) | 基于时序的业务应用及监控分析调度的方法和系统 | |
CN109673061A (zh) | 一种pdu会话处理的方法和装置 | |
CN106330683A (zh) | 一种多媒体座席系统 | |
CN110297698A (zh) | 一种多优先级动态限流方法、装置、服务器及存储介质 | |
CN107968895A (zh) | 呼叫中心及其处理大量话路请求的方法 | |
CN107295054A (zh) | 云会议资源的管理方法及装置 | |
CN104410511B (zh) | 一种服务器管理方法及系统 | |
CN106302590A (zh) | 云平台 | |
CN106161647A (zh) | 一种云终端设备批量发现的方法及云终端管理系统 | |
CN109104482A (zh) | 一种地网平台的分布式系统 | |
CN101167307A (zh) | 一种可动态自适应的分布式资源管理系统和方法 | |
CN105491253A (zh) | 一种呼叫中心的资源分配方法及系统 | |
CN106202361B (zh) | 数据查询方法及系统 | |
CN108768727A (zh) | 访问第三方服务的方法、电子装置及可读存储介质 | |
EP4083795A1 (en) | Method for deploying virtual machine, and related apparatus | |
CN110087321A (zh) | 触发终端会话的方法、装置、计算机设备及存储介质 | |
CN104427457B (zh) | 面向m2m应用和网络的业务平台接口装置及方法 | |
CN104935761B (zh) | 一种外呼技能分配方法、装置及呼叫中心系统 | |
CN101931715A (zh) | 一种客服系统及其中跨平台监控方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20171024 |
|
WD01 | Invention patent application deemed withdrawn after publication |