基于Java技术的Web环境下分布式数据库互操作性的实现
作者:李炽明 莫倩 徐明
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) 参考文献 |
基于Java技术的Web环境下分布式数据库互操作性的实现相关推荐
- 基于JAVA技术的WEB网管软件开发方案
2019独角兽企业重金招聘Python工程师标准>>> 随着Web/Java技术的成熟及其在Internet上的广泛应用,网络管理技术和模式迎来了又一次革命.在网络管理领域,通过We ...
- 互联网环境下分布式事务处理系统现状与趋势
互联网环境下分布式事务处理系统现状与趋势 马鹏玮, 魏凯, 姜春宇 中国信息通信研究院云计算与大数据研究所,北京 100191 摘要:传统集中式数据处理系统由于摩尔定律的逐渐失效,开始显露出性能瓶颈, ...
- 基于java技术的装潢公司网站开发计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
基于java技术的装潢公司网站开发计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java技术的装潢公司网站开发计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 本源 ...
- PHP是脚本语言 因此不能通过浏览器运行,SQL_基于ASP技术的Web数据库应用开发
基于ASP技术的Web数据库应用开发 第一节 Web数据库解决方案 一.Web数据库访问过程 Web数据库访问过程如下图: 可以将上述过程分为四步: 1.在浏览器地址栏输入http://mynetse ...
- 海量数据及多云环境下,数据库运维、分布式转型、国产化改造实践丨DAMS峰会(文末有福利)
随着大数据与云原生的相互碰撞,各技术领域的新一波挑战和创变正以迅雷之势向我们宣战.利用云原生技术的简便快捷.动态调度.按需伸缩等优势,如何加速大数据基础软件和系统的迭代更新频率.确保整体环境的最终一致 ...
- 海量数据及多云环境下,数据库运维、分布式转型、国产化改造实践丨DAMS峰会
随着大数据与云原生的相互碰撞,各技术领域的新一波挑战和创变正以迅雷之势向我们宣战.利用云原生技术的简便快捷.动态调度.按需伸缩等优势,如何加速大数据基础软件和系统的迭代更新频率.确保整体环境的最终一致 ...
- 基于Android9的非root环境下frida-gadget持久化
基于Android9的非root环境下frida持久化 博客: http://www.zhuoyue360.com 参考: 小肩膀安卓系统沙箱课程 https://bbs.pediy.com/thre ...
- SSM毕设项目基于Java技术的医院在线挂号系统s73ib(java+VUE+Mybatis+Maven+Mysql)
SSM毕设项目基于Java技术的医院在线挂号系统s73ib(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + ...
- 基于java订单管理系统_基于JAVA技术的订单管理系统(DOC毕业设计论文)
基于JAVA技术的订单管理系统(DOC毕业设计论文) 摘要本 论 文 的 研 究 课 题 是 < 基 于 JSP 技 术 的 订 单 管 理 系 统 > 的 实 现 . 本 系 统 通过 ...
最新文章
- A站被黑,你应该做些什么?
- 【网页前端设计Front end】HTML语言基础.下(看不懂你来打我)
- Android下的数据存储与访问、权限
- Spring3向Spring4升级过程中quartz修改
- CocoaAsyncSocket 套接字
- BootStrap 用法
- 智慧交通day04-特定目标车辆追踪01:总览概述
- C++工作笔记-getter/setter方法中大佬的风格
- 了解下JavaScript中的prototype
- c#划分目录和文件(小白的一点经验)
- oracle数据库字段的值加一_天天面试--数据库乐观锁和悲观锁
- 乐优商城(一)项目介绍
- C# http请求挂代理
- 基于工作流平台的ITSM系统
- linux系统配置sftp服务器,linux配置sftp服务器配置
- Linux(Ubuntu)同步互联网时间(ntpdate)
- L7 U2 希望与梦想
- 2018.10.2模拟赛
- vb向mysql写入字节流_vb向数据库写入数据
- Saturn Executor部署过程
热门文章
- 剪辑视频的软件怎么二次剪辑才算原创
- ResNext架构解析:深度神经网络的聚合残差变换
- USB转串口数据线Vista驱动
- 三部曲简史mobi_尤瓦尔简史三部曲:人类简史+未来简史+今日简史
- [微语 20.11.21] 洞天
- 国际商务英语学习[三]
- 数据安全管理软件-企业如何保护数据安全?
- 家乡旅游风景区介绍——茂名风景区网页设计HTML+CSS+JavaScript
- SQL-10-14 4-4 查询具有最高价格的机器的型号,机器包括PC、Laptop、Printer (10分)
- 程序员遇到有远见的丈母娘