数据库驱动程序的装载方法

xiaoxiao2020-7-22  16

专利名称:数据库驱动程序的装载方法
技术领域
本发明涉及数据库技术,更具体地说,涉及一种数据库驱动程序的装载方法。
背景技术
JDBC(Java Database Connectivity,即JAVA数据库连接)是由一组Java语言写成的类和接口组成,JDBC使用一种连接不同数据库的规范,其宗旨是让各个数据库开发商为Java程序员提供标准的数据库访问类和接口,所以应用相当广泛。程序员在应用JDBC时,经常将数据库驱动程序和自己的程序绑定在一起,即在CLASSPATH(类路径)中指定,或者自己的程序与数据库驱动程序一起形成一个jar文件(一种为JAVA定义的压缩文件扩展名,这种文件压缩格式采用ZIP标准)。这样方法有如下一些缺点(1)、如果形成一个jar文件则整个程序“体积”庞大,数据库开发商提供的JDBC驱动程序常常在程序包中占很大比例;(2)、数据库驱动程序可能在程序中固定,不可以修改或者不方便修改;(3)、在CLASSPATH中修改东西比较繁琐;(4)、不能方便地随数据库开发商提供的数据库驱动程序进行版本升级;(5)、不能提供集中管理数据库驱动程序的机制。
当然,程序员可以将数据库驱动程序放到JAVA扩展目录下(通常在ext目录下),以达到分离程序与数据库驱动程序的目的,但在数据库驱动程序的装载方面还是不够灵活,不能达到统一管理数据库驱动程序的目的。

发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种数据库驱动程序的装载方法,在标准装载方法之外,使程序员有更多的选择余地。
本发明解决其技术问题所采用的技术方案是一种JAVA数据库驱动程序的装载方法,其中,由驱动程序管理器接受并处理客户所发来的建立数据库连接的请求,并采用JAVA提供的标准方法查找所需的数据库驱动程序,如果找到则用该数据库驱动程序与数据库建立连接;其特征在于,如果找不到所需的数据库驱动程序,则按执行以下步骤A、则由所述驱动程序管理器向数据库驱动程序装载器发出加载数据库驱动程序的请求;B、所述数据库驱动程序装载器在本机或网络服务器上查找所需的数据库驱动程序,如果找到所需的数据库驱动程序,则将其返回到所述驱动程序管理器;C、用所找到的数据库驱动程序与数据库建立连接。
在本发明的方法中,可将数据库驱动程序的压缩文件存放在本机上,由所述数据库驱动程序装载器在本机上查找所需的数据库驱动程序。此时,在所述步骤B中,根据所述驱动程序管理器发来的请求中的驱动程序名,对压缩文件每一个入口点进行查找,如果找到所需的数据库驱动程序的压缩文件,则对所述压缩文件进行解压,并定义类(即向JAVA虚拟机注册类,并建立类名和类字节的对应关系),然后向所述驱动程序管理器返回已解压并定义的数据库驱动程序;如果在所有压缩文件的入口点中找不到所需的数据库驱动程序,则返回异常信息。
在本发明的方法中,还可将数据库驱动程序的压缩文件存放在数据库驱动程序文件服务器内,由所述数据库驱动程序装载器通过网络从所述数据库驱动程序文件服务器处查找所需的数据库驱动程序。此时,在所述步骤B中,根据所述驱动程序管理器发来的请求中的驱动程序名,所述数据库驱动程序装载器向所述数据库驱动程序文件服务器发出查找所需的数据库驱动程序的请求;所述数据库驱动程序文件服务器在所存放的压缩文件中进行查找,如果找到则返回成功消息给所述数据库驱动程序装载器,并将找到的文件附加在消息体中发送到所述数据库驱动程序装载器,再将其返回到所述驱动程序管理器;如果所述数据库驱动程序文件服务器在所存放的压缩文件中找不到所需的数据库驱动程序,则返回失败消息给所述数据库驱动程序装载器;所述数据库驱动程序装载器再向所述驱动程序管理器返回异常信息。
可见,与现有技术相比,本发明的方法在装载数据库驱动程序方面更加灵活一点,因为驱动程序存放的目录是可配置的,更可以实现网络加载数据库驱动程序,达到统一管理数据库驱动程序的目的。本发明的方法具有以下特点(1)、主程序与数据库驱动程序是分开的,避免了主程序因数据库驱动程序“体积”过大的缺陷;(2)、易于配置,驱动程序类可配置,且很容易为用户提供一个图形化的配置界面;(3)、数据库驱动程序升级很容易,只要修改配置文件,即可给程序换上合适的驱动程序,不用修改程序包,或者修改CLASSPATH;(4)、易管理,提供一种简单的数据库驱动程序集中管理模式——多个客户端可从一个地方下载并加载驱动程序,由单独的服务器管理驱动程序的更新。


图1是用于实现本发明方法的原理图;图2是利用本发明的方法与数据建立连接的流程图;图3是查找数据库驱动程序的流程图;图4是本发明中数据库装载器与数据库驱动程序文件服务器之间的通讯交互示意图。
具体实施例方式
本发明方法的原理如图1所示,本图采用的UML标准,其中每一个中文框经虚线连接到一个对应的英文框,将英文框图中内容翻译成中文。为实施本发明的方法,需要提供了如下一些模块1、数据库驱动程序装载器(FlexDriverLoader),用于在指定的数据库驱动程序的压缩文件中寻找数据库驱动程序;2、数据库驱动程序管理器(FlexDriverManager),用于根据指定的数据库驱动程序、URL(统一资源定位标记Internet的WWW服务程序上用于指定信息位置的表示方法)、用户名及密码,提供数据库的连接;3、数据库驱动程序文件服务器(DriverClassFileServer),用于管理多种数据库的JDBC驱动程序,响应数据库驱动程序装载器的请求,提供下载驱动程序的功能;4、配置者(DriverConfig)用于读取配置,可实现文本配置或XML(扩展标记语言)配置,并为数据库驱动程序装载器指定驱动程序,可以指定多个压缩文件;5、客户程序(Client)用于调用驱动程序管理器以获得数据库连接。
本发明中,驱动程序管理器可实现两种搜索驱动程序方式,具体方式如下其一是Java提供的标准的类装载方法,即由Class.forName()方法在CLASSPATH(类路径)中搜索驱动程序类;其二是由数据库驱动程序管理器提供的类装载方法,由“数据库驱动程序装载器”与“数据库驱动程序文件服务器”配合以完成搜索并加载驱动程序的任务。
如图2所示,本发明中对这两种方式的使用是有先后的,优先考虑使用Java提供的标准的类装载方法,如果该方法找不到数据库驱动程序,将使用数据库驱动程序管理器提供的类装载方法。
因此,本发明实际上是扩展了Java的数据库类装载方法,为客户提供了一种更灵活的数据库驱动程序的装载方法。
关于数据库驱动程序管理器提供的类装载方法,由图1中的结构,又可以组成两种由“数据库驱动程序装载器”与“数据库驱动程序文件服务器”配合完成的方法,其一是本地数据库驱动程序的装载方法;其二是网络数据库驱动程序的装载方法。下面分别对这两种方案的工作流程进行说明。
一、本地数据库驱动程序的装载方法所谓本地数据库驱动程序的装载方法,是指数据库驱动程序存放在本机上(本地),由数据库驱动程序装载器负责完成数据库驱动程序的本地搜索及加载的工作。具体流程如图3所示1、驱动程序管理器接受并处理建立数据库连接的请求。
其中,客户可以直接指定用某个数据库的驱动程序来建立连接,而不仅仅像JDK(JAVA开发工具包)提供DriverManager只提供URL,及登陆用户密码信息来建立数据库的连接,这里建立数据库连接的工作均由名为getConnection()的静态方法完成,方法所带参数为String driver 驱动类名String url 数据库的url信息String user数据库用户名String password密码信息数据库驱动程序管理器接受请求后将向数据库驱动程序装载器发出加载数据库驱动程序的请求。
2、数据库驱动程序装载器接受并处理加载数据库驱动程序的请求。
其中,数据库驱动程序装载器根据要加载的类从压缩文件中搜索数据库驱动程序。寻找的过程由lookFile(查找文件)方法完成的,LookFile方法的流程如图3所示。在寻找前必须设置要搜索的数据库驱动程序的压缩文件,设置的工作由addDriverFile()方法完成,如果在本地找不到所需的数据库驱动程序,则抛出‘ClassNotFoundException’(无法找到类的异常)的异常供检测。
数据库驱动程序装载器完成加载工作后将向驱动程序管理器返回加载的类。
3、驱动程序管理器向客户返回一个数据库连接。
在具体实施上述三个步骤时,由于不涉及网络操作,所以可以不用管数据库驱动程序文件服务器的配置。首先,在配置文件中或其它地方(如命令行、输入框等)配置驱动程序的位置信息,即数据库驱动程序的位置;配置类对象(配置者)将读取驱动程序的信息,并为数据库驱动程序装载器添加相应的驱动资源。然后,客户程序调用驱动程序管理器的“getConnection”方法获取数据库连接,该方法需要如下信息驱动程序类名、URL、用户名以及密码。比如客户程序中可以这样写String driver=″com.sybase.jdbc2.jdbc.SybDriver″;String url=″jdbcsybaseTds10.40.99.15000/billdb″;String user=″sa″;String password=″″;Connection conn=
FlexDriverManager.getConnection(driver,url,user,password);如果连接成功则返回数据库连接给客户程序应用;如果失败抛出异常供客户程序检测并处理。
二、网络数据库驱动程序的装载方法所谓网络数据库驱动程序的装载方法,是指数据库驱动程序存放在数据库驱动程序文件服务器上,由数据库驱动程序文件服务器与数据库驱动程序装载器配合完成数据库驱动程序的网络搜索(在服务器上搜索)及加载的工作。本方法与“本地数据库驱动程序的装载方法”不同之处在于,数据库驱动程序装载器和数据库驱动程序文件服务器必须执行一些网络操作才能完成搜索的任务。下面只是介绍数据库驱动程序装载器与数据库驱动程序文件服务器之间如何完成网络操作的流程,其它流程与“本地数据库驱动程序的装载方法”一样。其中,数据库驱动程序装载器与数据库驱动程序文件服务器是通过HTTP 1.0协议进行通讯的,如图4所示,通讯流程如下1、数据库驱动程序装载器向数据库驱动程序文件服务器发出查找某个数据库驱动程序类的请求。
2、数据库驱动程序文件服务器根据请求在所配置的驱动压缩文件中寻找,如果找到则用返回成功的消息,并将类文件附加在消息体中发送到数据库驱动程序装载器;如果找不到相应类,则返回失败的消息给数据库驱动程序装载器。
3、数据库驱动程序装载器完成加载工作后将向驱动程序管理器返回加载的类;如果没有找到可加载的类则抛出ClassNotFoundException的异常供检测。
在具体实施上步骤时,由于涉及到网络操作,所以流程比本地加载数据库驱动程序要稍微复杂一些,具体如下(1)数据库驱动程序文件服务器配置服务监听端口,配置服务器要管理的数据库驱动程序压缩包或者驱动类目录。
(2)启动数据库驱动程序文件服务器,命令行如下Java FlexClassFileServer,可以用浏览器检验数据库驱动程序文件服务器是否启动成功。
假设数据库驱动程序文件服务器所在机器IP地址为10.40.57.4,设定端口为8898,且管理了以下一些数据库驱动程序压缩包Sybase的JDBC驱动程序包jconn2.jarOracle的JDBC驱动程序包816classes12.zip在浏览器中输入http//10.40.57.48898/SybVersion.class后,如果出现下载的提示,则说明数据库驱动程序文件服务器启动成功。注意测试时每个类要带有完整的包名,例如http//10.40.57.48898/oracle.JDBC.driver.OracleSql.class可以成功,但如果写成http//10.40.57.48898/OracleSql.class就会失败。如果没有下载提示则说明没有启动数据库驱动程序文件服务器或者启动有误或者测试本身有误(比如没有输入正确的类名及包名)。数据库驱动程序文件服务器启动成功后方能继续执行下面流程,否则没有意义。
(3)在本地配置文件中或其它地方(如命令行,或输入框等)配置驱动程序的位置信息,包括数据库驱动程序文件服务器的IP地址及监听端口。
(4)客户程序调用驱动程序管理器的“getConnection”方法获取数据库连接,该方法需要如下信息驱动程序类名、URL、用户名、密码。如果获取连接成功则返回数据库连接给客户程序应用。如果失败将抛出异常供客户程序检测并处理。
本发明的方法在计费查询系统中应用时,效果良好,能够实现查询程序与数据库驱动程序分开,并能方便地升级数据库驱动程序。
权利要求
1.一种JAVA数据库驱动程序的装载方法,其中,由驱动程序管理器接受并处理客户所发来的建立数据库连接的请求,并采用JAVA提供的标准方法查找所需的数据库驱动程序,如果找到则用该数据库驱动程序与数据库建立连接;其特征在于,如果找不到所需的数据库驱动程序,则按执行以下步骤A、由所述驱动程序管理器向数据库驱动程序装载器发出加载数据库驱动程序的请求;B、所述数据库驱动装载器在本机或网络服务器上查找所需的数据库驱动程序,如果找到所需的数据库驱动程序,则将其返回到所述驱动程序管理器;C、用所找到的数据库驱动程序与数据库建立连接。
2.根据权利要求1所述的方法,其特征在于,可将数据库驱动程序的压缩文件存放在本机上,由所述数据库驱动程序装载器在本机上查找所需的数据库驱动程序。
3.根据权利要求2所述的方法,其特征在于,在所述步骤B中,根据所述驱动程序管理器发来的请求中的数据库驱动程序名,对压缩文件每一个入口点进行查找,如果找到所需的数据库驱动程序的文件,则对找到的文件进行解压,并定义类,然后向所述驱动程序管理器返回已解压并定义的数据库驱动程序;如果在所有的压缩文件入口点中找不到所需的数据库驱动程序,则返回异常信息。
4.根据权利要求3所述的方法,其特征在于,所述定义类的操作包括向JAVA虚拟机注册类,并建立类名和类字节的对应关系。
5.根据权利要求1所述的方法,其特征在于,可将数据库驱动程序的压缩文件存放在数据库驱动程序文件服务器内,由所述数据库驱动程序装载器通过网络从所述数据库驱动程序文件服务器处查找所需的数据库驱动程序。
6.根据权利要求5所述的方法,其特征在于,在所述步骤B中,根据所述驱动程序管理器发来的请求中的驱动程序名,所述数据库驱动程序装载器向所述数据库驱动程序文件服务器发出查找所需的数据库驱动程序的请求;所述数据库驱动程序文件服务器在所存放的压缩文件中进行查找,如果找到则返回成功消息给所述数据库驱动程序装载器,并将找到的文件附加在消息体中发送到所述数据库驱动程序装载器,再将其返回到所述驱动程序管理器;如果所述数据库驱动程序文件服务器在所存放的压缩文件中找不到所需的数据库驱动程序,则返回失败消息给所述数据库驱动程序装载器;所述数据库驱动程序装载器再向所述驱动程序管理器返回异常信息。
全文摘要
本发明涉及一种JAVA数据库驱动程序的装载方法,其中,由驱动程序管理器接受并处理客户所发来的建立数据库连接的请求,并采用JAVA提供的标准方法查找所需的数据库驱动程序,如果找到则用该数据库驱动程序与数据库建立连接;其特征在于,如果找不到所需的数据库驱动程序,则按执行以下步骤A、则由驱动程序管理器向数据库驱动程序装载器发出加载数据库驱动程序的请求;B、数据库驱动程序装载器在本机或网络服务器上查找所需的数据库驱动程序,如果找到所需的数据库驱动程序,则将其返回到驱动程序管理器;C、用所找到的数据库驱动程序与数据库建立连接。采用本发明的方法,使程序员在标准装载方法之外有更多的选择余地。
文档编号G06F9/06GK1499366SQ0214522
公开日2004年5月26日 申请日期2002年11月8日 优先权日2002年11月8日
发明者幸勇, 幸 勇 申请人:深圳市中兴通讯股份有限公司

最新回复(0)