MyJDBC驱动程序说明文档
1. 为什么会需要重新编写JDBC驱动?
由于先前所使用的PowerBuilder开发工具(简称PB) ,在钻研其数据库连接的参数时,无意发现现在12.5版本的PB已经可以支持JDBC方式连接数据库,故马上产生了一个新奇的想法,我是否可以自己编写一套属于自己的JDBC驱动,使应用程序调用这个JDBC驱动然后生成HTTP请求,数据以json的方式进行编码,访问远端Tomcat服务器的Servlet,然后Servlet接收到访问请求再调用真正的各种数据库的JDBC(MSSQL、MySQL等) 将结果集再使用json编码返回给MyJDBC驱动, 驱动经过json解析后再返回给应用程序,这样可以将原有所有编写的应用程序在不需要改变源码的情形下,变向的将Client/Server架构程序变成三层架构应用。故立即百度了一下,发现基于JDBC驱动,通常有4种类型,Type 1~Type 4 (至于如何区分请读者再另行百度,在此不再赘述) ,通常所说的JDBC驱动都是基于Type 4这种类型的(也就是各大数据库厂商所提供的JDBC驱动,例如MSSQL,MySQL官方能找到的)。两种方式的对比如下图:
2. 这种驱动的优缺点?
优点:
1) 原有PB应用均无需修改源码情形下,通过改变访问接口参数 ,可以将应用部署于互联网中,
2) 同时具有良好的安全性,可以通过接口参数使用gzip方式进行数据压缩。
缺点:
1) 通过其软件架构可以了解到,其访问过程需要经过诸多环节,结构比Type4 JDBC驱动过于复杂,其效率肯定不如Type 4高效,但可以通过优化PB程序结构,大量频繁交互SQL的,可以通过使用存储过程的方式,同样可以适当的提升整体的运行效率。来达到变向规避效率低下的缺点。(即:部分应用需要适当优化PB的程序结构)
3. 编写的这个JDBC驱动包含哪些部分,能实现哪些功能?
此驱动相当于在应用程序与服务器之间多了一层中间件,故此驱动分为两部分程序,一部分为基于Java的JDBC驱动(通常为Jar包形式)
一部分为服务端Tomcat的Servlet程序,部署在Tomcat服务器下(通常将文件夹拷贝至Tomcat的webapps子目录中即可)
可以实现将应用程序安全的部署于互联网环境中。
4. 客户端程序的使用与服务器端的部署
客户端:
1> 若想将应用程序调用接口改为MyJDBC
2> 服务器IP修改为部署Tomcat的服务器ip,默认端口为8090若已修改了Tomcat的Server.xml配置文件的端口号,则需要ip后加冒号和端口号,例如:10.0.0.8:9090注意冒号需要为半角字符
3> 数据库,由于改用三层架构,起始MyJDBC底层工作时, 均会标记每一个客户端虚拟连接至服务器,同时Tomcat服务端Servlet也会保持真实的JDBC连接在所有的连接池中,虚拟连接与真实连接是一对一的对应关系,为了区分和标记每一个连接,切连接必须保持唯一性,数据库这个属性由两部分组成,一部分为配置文件标识(对应Tomcat中properties配置文件主文件名),后面部分为流水号标识每一个唯一的客户端,此部分不可重复,若共享一个标识信息则在服务端也会共享同一个真实连接,这样会导致查询出现异常,这里必须注意。
例如:lp:1 lp 则指向对应服务器中Tomcat 服务器中webapps中lp.properties配置文件 冒号后面为流水号为1的客户端
4> 将MyJDBC.jar驱动包文件放置于PB应用程序所在目录中(PB应用程序所在目录全路径不可包含中文,否则会导致数据库无法连接),MyJDBC.jar文件所包含的全路径,同时需要设置在系统环境变量中
5> 由于PB应用程序需要调用JDBC驱动故离不开jre环境,请检查应用程序目录下是否包含jre的子目录,若系统本身已安装了jre同时指定了JAVA_HOME环境变量(JAVA_HOME指向的jre优先级会高于应用程序下的jre子目录,若应用程序目录中包含了jre子目录可不指定JAVA_HOME环境变量,环境变量可以为用户环境变量或系统环境变量均可),故JAVA_HOME指向的JRE必须为32位JRE,若指向了64位JRE也会导致连接不上数据库(因为PB应用程序均为32位,所以其调用的JRE也必须为32位环境)
6> 同时还需要确保应用程序的PB环境运行支持库DLL的存在,通常为若干dll文件,如果是绿色版,请确保这些文件存在于应用程序目录或path环境变量所指向的目录。
7> 若仍然无法连接数据库,请检查应用程序目录中或系统path环境变量路径中是否包含有pbjdbc12125.jar文件的所在路径,同时这个文件必须要真实存在,因为PB应用程序以JAVA方式调用JDBC,这个文件为JDBC接口的调用驱动。
服务端:
服务端的目录结构通常为如下形式
1> 在classes目录下通常会保存一些配置文件扩展名为properties,这些为保存至真实SQL数据库服务器的连接信息,通常由4部分组成,服务器ip、数据库名称、连接用户名、连接密码(通常还包括JDBC的驱动包名,这个无需修改,除非替换了jar包)
2> 再有就是Tomcat中conf子目录中的server.xml配置文件,可以修改tomcat服务的端口号
3> 可以用客户端浏览器打开http://ip:8090/JDBC_Server/dbServlet?action=test链接,如果能看到test is okay字样,则代表服务端部署成功。
备注: 此中连接方式只适用于PB开发的独立的应用程序,基于SunlikeERP的二次开发程序不适用(因为PB程序需要捕获Sunlike ERP客户端登录所使用的客户端,而且Sunlike ERP也无法运行于互联网环境下,故此种连接方式对于此类应用无意义)。