作者:李炽明 莫倩 徐明
1 JDBC工作原理
JDBC(Java Database Connectivity)是1个Sun公司注册了的商标,代表用来执行SQL语句的Java语言应用程序编程接口API,它包括一系列用Java语言编写的类和接口,为数据库开发者开发数据库应用提供了标准的应用程序编程接口。
1.1 JDBC概述
采用JDBC可以很容易用SQL语句访问任何商用数据库,也就是说,通过JDBC API,数据库应用开发者就不需要编写1个程序访问Sybase数据库,编写另1个程序访问Oracle数据库,再编写第3个程序访问Informix数据库,而只需编写1个使用JDBC API的程序,就可以将SQL查询语句送往合适的数据库。同时,采用Java语言编写应用程序,具有平台无关性,不需要为不同的平台编写不同的应用程序。因此,采用Java和JDBC编写数据库应用程序的开发者可以真正做到“编写一次,随处可用”。
JDBC扩展了Java语言的功能。例如,使用Java和JDBC,可以制作1个能够从远程数据库上获取信息的具有Java应用小程序(Applet)的Web主页,或者开发1个能够使企业的员工通过企业内部网(Intranet)访问1个或多个内部数据库的应用。
采用Java和JDBC将使信息的收集和发送非常容易和经济,公司和企业可以继续保留以前的数据库系统,甚至这些数据库系统是互不相同的,仍然可以轻松地访问上面的信息。并且开发1个新的数据库应用的时间也将大大缩短。
1.2 JDBC的体系结构
JDBC的体系结构包含4个组件。
1.JDBC应用程序。JDBC应用程序负责用户与用户接口之间的交互操作,以及调用JDBC的对象方法以给出SQL语句并提取结果。
2.JDBC驱动程序管理器。JDBC驱动程序管理器为应用程序加载和调用驱动程序。
3.JDBC驱动程序。JDBC驱动程序执行JDBC对象方法的调用,发送SQL请求给指定的数据源,并将结果返回给应用程序。驱动程序也负责与任何访问数据源的必要软件层进行交互。
4.数据源。数据源由数据集和与其相关联的环境组成,主要指各数据库厂商的数据库系统。
与ODBC一样,JDBC提供给程序员的编程接口由2部分组成,即:面向应用程序的编程接口JDBC API和供底层开发的驱动程序接口JDBC Driver API。JDBC API是为应用程序员提供的,而JDBC Driver API则是为各个商业数据库厂商提供的。各个商业数据库厂商的JDBC驱动程序是由JDBC驱动程序管理器自动和统一管理的。
2 RMI工作原理
在1个分布式系统中,不同主机上的程序之间的通信,可以通过直接对Socket编程,这是比较底层的方法,也可以使用层次更高一些的RPC(Remote Procedure Call)机制来实现。但是对于Java这种纯面向对象的网络编程语言来说,这些方法和机制都不可避免地破坏了Java的面向对象的特性。Java的RMI技术所要做的事情就是实现分布式对象环境下的不同虚拟机上的对象之间的相互引用。
2.1 RMI概述
RMI就是远程方法调用(Remote Method Invocation),是Java体系中新兴的一门技术。Java是一种纯面向对象的语言,每一个程序实体都是以对象的形式提交的。为了使分布式环境下的Java编程保持这一特性,Sum公司提出了分布式对象的概念,并且为分布式对象(即远程对象)之间互相引用提供了适合对象语义的基于抽象的对象层次的机制,这就是RMI。它使得分布式环境下的Java编程或者说Java程序之间的网络通信不再涉及底层的协议和数据的编码解码,从而更加简单和自然。
2.2 RMI的体系结构
如图1所示,RMI系统由以下3层组成:存根/架构(stub/skeleton)层,远程引用层和传输层。每一层的边界是由特定的界面和协议来界定的,因此,每一层相对于它的相邻层是独立的,也就是说,某一层在实现上的改变,是不会影响到其它层的。
图1 RMI的体系结构
stub/skeleton层是Java程序跟RMI系统其它部分的接口。在RMI系统中,这一层实际上是扮演着代理的角色,stub和skeleton分别是客户程序和服务程序的代理人。在客户端,客户程序向stub发出远程方法调用请求,stub则负责把这些请求传递给服务器,并且把调用结果返回给客户程序。而在服务器端,来自客户端的调用申请为skeleton所接收,并且由skeleton负责调用相应的对象方法为之服务,调用结果也是由skeleton返回给客户端。 远程引用层是具体的从语义上实现远程对象引用的部分,所有的包括对象的复制等对远程对象的操作都由远程引用层来管理。 传输层则负责侦听进来的调用请求,为它们建立连接,并且负责管理和监视这些连接,同时为所有存在于该地址空间的远程对象维持1张远程对象表,以便定位远程调用的目标。 2.3 对象序列化技术 RMI系统中还用到对象序列化技术(object serialization)。对象序列化实质是对Java对象的编码,在远程方法调用过程中,它负责把发送方要传送的Java对象先编码成字节流,然后再进行网络传送,而在接收方,它负责把接收的字节流还原成Java对象,从而实现了不同地址空间上的对象的透明传送。 2.4 RMI的目标 RMI技术是针对Java语言的,它的目标就是实现对存在于不同虚拟机上的对象的无缝的远程调用,把分布式对象模型自然地集成到Java语言里,尽可能地从语义上保留Java的面向对象的特性,也保留Java runtime环境所提供的安全性。 在RMI体系里,所有的远程方法调用的实现细节对Java程序来说都是透明的,远程对象之间的引用,就跟引用本地的Java对象一样的简单自然,符合面向对象的语义。 在RMI里,对远程方法的调用是很重要的,在语法上,跟对本地方法的调用是一致的。 3 基于JAVA技术的Web环境下分布式数据库互操作性的实现
这种应用系统,由许多分布在不同主机节点上的服务器以及它们的直接客户机所 组成,每1 个服务器与其直接客户机构成1个三层结构系统。服务器由HTTP服务器、RMI系统(Server/Cl ient)、JDBC、ODBC和SQL数据库服务器组成,每1个服务器通过RMI系统与和它相连的其它服 务器以及直接客户机进行通信。在整个系统里面,它既作服务器,为直接客户和其它服务器 提供数据服务,又作客户机,可以向其它服务器申请数据服务。 4 总 结 作者单位:长沙国防科技大学并行与分布处理重点实验室(410073) 参考文献 |