RMI+(共4篇)
RMI+ 篇1
1 前言
在现实生活中, 随着企业信息化建设的不断深入和发展, 企业自己内部和不同企业之间对信息以及对数据的相互之间交换量越来越大, 而这些数据以及信息往往大都需要在不同的计算机网络间传送和交流, 分布式计算可以通过调动不同网络上多台计算机的计算处理能力, 发挥远程调用数据的功能。 RMI (Remote Method Invocation) 是一种分布式技术, 使用RMI可以让一个虚拟机 (JVM) 上的应用程序请求调用位于网络上另一处的JVM上的对象方法。 习惯上称发出调用请求的虚拟机 (JVM) 为 (本地) 客户机, 称接受并执行请求的虚拟机 (JVM) 为 (远程) 服务器[1]。 RMI应用程序通常包括两个独立的程序, 服务器程序和客户机程序。 典型的服务器应用程序将创建多个远程对象, 使这些远程对象能够被引用, 然后等待客户机调用这些远程对象的方法。 而典型的客户机程序则从服务器中得到一个或多个远程对象的引用, 然后调用远程对象的方法。 RMI为服务器和客户机进行通信和信息传递提供了一种机制[2]。
2 远程对象及其代理
2.1 远程对象
驻留在 (远程) 服务器上的对象是客户要请求的对象, 称为远程对象。 也就是客户程序请求远程对象调用方法, 然后远程对象调用该方法并返回结果[3]。
2.2 代理与存根
使用RMI, 客户应用程序不需要与远程对象直接打交道, 而让客户应用程序和远程对象的代理打交道, 远程对象与远程对象的代理都实现了相同的接口。 当用户请求远程代理调这样的方法时, 一旦远程代理确认远程对象能调用相同的方法, 远程代理就会把实方法调用委派给远程对象。 RMI会给用户生成一个叫存根 (Stub) 字节码, 同时把这个存根产生的对象为作为远程对象的代理[4]。 远程代理对象需要驻留在客户端, 所以需要把存根下载或者复制到 (本地) 客户机。 因此, 用户实际上是在和远程对象的代理直接打交道, 但用户并没有感觉到他在和一个代理打交道, 而是觉得自己是在和远程对象直接打交道, 如图1 所示
2.3 Remote接口
RMI为了标识一个可以被客户请求的一个对象是远程对象, 要求远程对象必须实现java.rmi包中的Remote接口, 只有实现了Remote接口的类的实例才能够被RMI认为是一个远程对象。 Remote接口中没有方法, 因此必须扩展Remote接口, 以便规定远程对象的哪些方法是客户可以请求的方法, 用户不用编写和远程代理的相关代码, 只需知道远程对象和远程代理实现了相同的接口即可[5]。
3 RMI的设计过程
假设C:Client目录用来存放本地客户端的相关类; 远程服务器的有关类的存放目录是C:Server, 同时服务器的IP地址是127.0.0.1。
3.1 扩展Remote接口
定义一个接口是Remote的子接口, 即扩展Remote接口。以下方法定义一个Remote的子接口Sub Remote。 该子接口中定义了一个求面积的方法, 即要求远程对象为用户计算某种图形的面积, 其代码如下:
将该接口保存在远程服务器的C:Server目录中, 同时并编译它生成相应的.class目标字节码文件。 因为客户端的远程代理也需要使用到该接口, 所以该目标字节码文件生成后复制一份到C:Client客户端的目录中。
3.2 创建远程对象
RMI使用Remote接口来标识一个远程对象, 而Remote接口中并没有方法, 所以需要创建远程对象的类实现Remote接口的一个子接口。 同时, RMI为了让一个对象成为远程对象, 还需要进行一些必要的初始化工作, 因此在创建远程对象的类时, 可以让该类是RMI提供的java.rmi.server包中Unicast Remote Object类的子类。 以下创建远程对象的类Con SubRemote实现了上述Sub Remote接口, 所创建的远程对象可以计算圆的面积:
将Con Sub Remote.java保存到远程服务器的D:Server目录中, 并编译它生成.class目标字节码文件。
3.3 生成存根
RMI负责产生存根, 如果创建远程对象的字节码是Con SubRemote.class, 哪么存根字节码是Con Sub Remote_Stub.class。 RMI使用rmic命令生成存根Con Sub Remote_Stub.class, 首先进入C:Server目录, 然后执行如图2 所示rmic命令, 即可生成存根。
生成存根后, 客户端可使用存根来创建远程代理对象, 所以需要将Con Sub Remote.class复制到C:Client客户端的目录中。
3.4 启动注册rmiregistry
创建远程对象, RMI要求远程服务器必须先启动rmiregistry, 启动了rmiregistry, 远程服务器才能够创建远程对象, 并将该创建的远程对象注册到rmiregistry管理的注册表。 在远程服务器执行rimregistry命令。 就可以启动注册rmiregistry。
3.5 启动远程对象服务
启动rmiregistry后, 远程服务器就可以启动远程对象服务了。 远程服务器使用java.rmi包中的Naming类调用其类方法rebind绑定一个远程对象到rmiregistry所管理的注册表中。
rebind (String name, Remote obj)
rebind方法中的参数name是URL格式, 参数obj表示远程对象, 客户端的代理可以通过name找到远程对象obj。 运行以下程序Remote Bind, 该程序可以启动远程对象服务, 即该应用程序可以让用户访问它注册的远程对象。
将Remote Bind.java保存到远程服务器的D:Server目录中, 并编译它生成相应的Remote Bind.class字节码文件, 然后运行Remote Bind。
3.6 运行客户端程序
远程服务器启动远程对象服务后, 客户端就可以运行有关程序, 访问使用远程对象了。 客户端使用java.rmi包中的Naming类调用其类方法Lookup (String name) , 调用该方法返回一个远程对象的代理, 即使用存根产生一个和远程对象具有同样接口的对象, 该方法中的参数name的取值必须是远程对象注册的name[6]。 如rim://127.0.0.1/rect。
客户程序可以像使用远程对象一样来调用Lookup (String name) 方法返回远程代理。 如下面的客户应用程序Client Application中的代码就调用了Lookup方法返回一个实现Sub Remote接口的远程代理。
Client Application.java保存到客户端D:Client目录中, 上述Client Application程序使用远程代理计算圆的面积, 然后编译、 运行该程序即可以使用远程代理计算圆的面积, 程序运行效果如图3 所示。
4 结语
RMI是一种分布式技术, 使用RMI可以让一个虚拟机上的应用程序请求调用位于网络上另一处JVM上的对象方法, 它可以简化在多台计算机上的Java应用之间的通信, 可以在编程时不必再过问在RMI之下的网络细节问题, 任意两台计算机之间的通信完全由RMI负责, 这样可以简化程序开发编写工作, 提高效率。
摘要:在Java程序开发中, 经常会在网络开发编程中涉及到Socket (套接字) 编程, 但使用Socket进行网络编程需要大量重复编码, 在比较复杂分布式操作时, 将会使设计过程显得非常麻烦, 而且十分容易出现错误。提出使用RMI实现Java的远程调用, RMI是分布式对象软件包, 是一种分布式技术, 它可以简化在多台计算机上的Java应用之间的通信, 可以在编程时不必再过问在RMI之下的网络细节问题, 任意两台计算机之间的通信完全由RMI负责, 这样可以简化程序开发编写工作, 提高效率。
关键词:RMI软件包,Java语言,Socket编程,远程调用
参考文献
[1]李芝兴, 杨瑞龙.Java程序设计之网络编程基础教程[M].北京:清华大学出版社, 2012.
[2]张思民.Java语言程序设计[M].3版.北京:清华大学版社, 2015.
[3]朱喜福.Java网络编程[M].2版.北京:人民邮电出版社, 2008.
[4]王诚, 梅霆.Java编程技术与项目实战[M].2版.北京:人民邮电出版社, 2015.
[5]孙宪丽, 关颖.Java程序设计基础与实践[M].北京:清华大学出版社, 2015.
[6]梅兴文.Java编程入门经典[M].北京:人民邮电出版社, 2007.
RMI+ 篇2
关键词:RMI原则,映射,反演
一、RMI原则的基本内容
RMI方法是关系 (Relationship) 、映射 (Mapping) 、反演 (Inversion) 方法的简称, 是由中国学者徐利治教授于1983年首先提出的, 这一方法在数学中已有着十分广泛和重要的应用, 它是一种在化归法基础上发展起来的处理问题的普遍方法和原理, 它属于一般科学方法性质范畴的一种工作原则。因为这种普遍方法或工作原则包括着对所要研究的问题中的关系机构, 采取映射和反演两个步骤去解决问题, 故而才如此命名。这里所说的映射和反演可以赋予很广泛的含义。因此RMI原则实际可以理解为一种包罗万象的科学方法论原则。
RMI原则的基本内容为:令R表示一组原象的关系结构 (或原象系统) , 其中包含着待定的原象x, 令M表示一种映射 (一一对应法则) , 通过它的作用假定原象结构系统R被映成映象关系结构R*, 其中自然包含着未知原象x的映象x*, 如果有办法把x*确定下来, 则通过反演即逆映射I=M-1也就相应地把x确定下来, 这便是RMI工作原则的基本内容。这个过程可用框图表示如下:
数学中的RMI原则可陈述如下:给定一个含有目标原象x的关系结构系统S。如果能找到一个可定映映射φ, 将S映入或映满S*, 则可从S*通过一定的数学方法把目标映象x*=φ (x) 确定出来, 从而通过反演即逆映射φ-1便可把x=φ-1 (x*) 确定出来, 这样, 原来的问题就得到了解决。
简言之, RMI方法的全过程表现为:关系一映射一定映一反演一得解。
二、RMI原则在高等数学中的应用
正因为RMI原则是一个极普通的方法原则, 所以无论在初等数学或是现代高等数学领域中都可以找到它的许多应用实例。本文以几个高等数学中的典型例子来阐述RMI原则的应用方法。
例1 (换元法) 求不定积分
分析:原象结构是无理函数的不定积分, 只要作变换则可得到易于定映的有理函数的不定积分, 再作反演可使问题得解。
解则x=t6, dx=6t5dt, 从而有
一般地说, 借助于变换 (其中n为大于1的正整数) , 就可以解决任一形如的无理函数的积分问题。因为, 通过所说的变换, 可将上述函数的积分问题转化为有理函数的积分问题, 而后者则是已经解决了的。
分析:微分 (求导) 运算与积分运算可用作映射方法解决分析数学中的许多问题。因为求导与积分互为逆运算, 所以它们在解决问题的RMI程序中彼此成为逆运算。题中是要求出和函数, 就是要求出和函数S (x) 的初等表达式。因此, 这种表达式就是我们所寻求的对象, 即未知原象。当然, 和函数实质上已由上述幂级数所确定, 所以幂级数与S (x) 的相等关系便是原象关系。又因为幂级数在它的收敛区域内可以逐项积分和逐项求微商。因而采用微商算子D所给出的如下映射。
解:设φ:fDf=ddxf, 可以把S (x) 变换成一个较简单的熟知对象 (映象) :
在原象f满足f (0) =0的限制下, 映射D是一对一的, 其反演是
因此, S' (x) 的反演结果便给出了原象表示式
例3 (幂级数变换法) 求解差分方程fn=fn-1+fn-2 (n=2, 3, …) , 其初始条件为f0=1, f1=2。
解:差分方程就是数列间的“递推关系”。所谓解差分方程, 就是要根据递推关系及初始条件去确定整个数列{fn}的构造形式, 也即要求得出fn的一般表达式。为此, 可引入如下形式的映射 (幂级数变换) :
在上述映射关系中, {fn}是原象, F (t) 是它的映象。根据给定的原象关系及初始条件可得映象F (t) 之间的关系:
所以由原象关系导出了映象关系F (t) =1+ (t+t2) F (t)
由此求出映象F (t) =1/ (1-t-t2)
最后, 对求得的映象F (t) 作反演, 事实上, 利用分项分式法可得
例4 (Laplace变换法) 求解微分方程y"-3y'+2y=2e3t, 初始条件为y (0) =y' (0) =0。
解:本题中未知原象为y (t) , 它所满足的微分方程和初始条件组成原象关系, 应用拉氏变换作映射, 原象y (t) 的映象为现对微分方程两边的函数同时作拉氏变换, 并顾及初始条件, 利用初等微积分中的分部积分法, 不难求得映射关系
再对上式作反演 (即拉氏变换的逆变换) , 利用拉氏变换对照表, 可得的原象:y (x) =et-2e2t+e3t
这就是微分方程满足初始条件的解。
总之, 从以上诸例可以看出, 运用RMI方法解决问题的关键在于选择合适有效的映射方法, 只有找准合适的映射方法才能使问题迎刃而解。一般说来, 有效的映射至少应具备下列二条件:第一, 它必须是可逆的可定映映射。第二, 它在将包含有数学问题的原象关系转换成映象关系时, 要能显示出化繁为简、化难为易或化生为熟的作用。
数学上的RMI原则对数学工作者很是有用。小而言之, 可利用该原则解决个别的数学问题。大而言之, 甚至可以利用该方法原则作出数学上的重要贡献。教学中有意识地引导学生应用RMI原则, 不仅有利于培养学生解决数学问题的能力, 而且有助于学生学会分析问题的能力。
参考文献
[1]徐利治, 郑毓信.关系映射反演原则及应用[M].大连:大连理工大学出版社, 2008.
RMI+ 篇3
目前, 关于RMI原则在中学数学和高等数学中的应用研究较多, 而对于其在小学数学中的运用研究相对较少。其实, 在小学数学的许多方面也体现着RMI的思想。这种化难为易、化繁为简的思想可以让小学生体会到数学思想的魅力, 运用其解决问题会使小学生体验到成功的快乐与喜悦, 从而激发他们学习数学的兴趣, 提高他们分析问题与解决问题的能力。
一、RMI原则概述
1. RMI原则的基本内容。
关系 (relationship) 映射 (mapping) 反演 (inversion) 原则 (简称RMI原则) , 是一种分析和处理问题的普遍方法或准则, 不仅在数学中, 几乎在一切工程技术或应用科学中, 都往往利用这一原则去解决问题。而且映射和反演可以赋予很广泛的含义, 因此RMI原则实际可以理解为一种包罗万象的科学方法论原则。
RMI原则的基本内容, 可用框图表示如下:
简单地解释这个框图就是:我们要求的未知目标原象x是一个不容易求出的量, 通过含有x的原象关系结构R, 利用映射M (一一对应) 将所求问题映射到映象关系结构R*, 从R*中找出未知原象x的映象x*, 如果x*可以确定下来, 再通过反演即逆映射M-1就可以将未知目标原象x确定下来。值得注意的是这里用到的映射M与反演M-1必须是确实可行的, 否则整个过程都将无任何意义。
2. RMI原则的具体应用。
乍一看RMI原则, 很多人可能会满脑问号, 不知道RMI原则到底是什么意思。其实, 早在我国古代就已经有人运用RMI原则来解决问题, “曹冲称象”就是一个典型的实例。在当时的技术条件下直接称量大象的质量是很难办到的, 于是聪明的曹冲就想到了利用浮力的原理把称量大象的质量转化为称量与其等重的石块的质量, 称量大象转化为称量石块, 问题一下子就变简单了。简单地说, RMI原则的基本思想就是变换问题, 化难为易。
二、RMI原则在小学数学“数与代数”领域中的渗透
学习数学不仅要学习它的知识内容, 而且要学习它的精神、思想和方法。掌握基本数学思想方法能使数学更易于理解与记忆, 领会数学思想方法是通向迁移大道的“光明之路”。结合小学数学的具体内容渗透数学思想方法, 不仅能使小学生更好地理解和掌握数学内容, 更有利于小学生感悟数学思想方法, 初步理解数学内容的精神, 感受数学科学的精髓, 帮助他们学习用数学的眼光看待世界, 初步学会思维, 发展数学素养。RMI原则便是一种化繁为简、化难为易的重要数学思想, 在教学中, 教师应注意这种思想在小学数学中的渗透, 并应有意识地将这种思想渗透给学生, 使学生领会RMI这种重要的数学思想, 使他们学会运用这种思想解决在数学学习中遇到的困难, 从而达到锻炼思维, 激发学习数学的兴趣的目的。
新课程标准总体上将小学数学的内容分为四个领域:数与代数;空间与图形;统计与概率;实践与综合应用。下面笔者主要从数与代数领域出发, 结合人教版小学一至六年级的数学教材来分析RMI原则在“数与代数”内容中的具体渗透。
1. RMI原则在数的认识中的渗透。
小学生对数的认识大多源自于实际生活。将数字映射到实际生活, 从生活中认识数, 理解数的现实意义, 再反演到数学中, 就达到了认识数字、理解数字意义的目的, 这个过程就体现了RMI原则的基本思想。
例如, 认识数字8, 具体的映射过程如下:
2. RMI原则在数的运算中的渗透。
(1) RMI原则在20以内整数减法中的渗透。一年级的学生在初学减法时对它可能还很陌生, 因此需要一个有效的转化, 这个转化的平台就是加法。因为加法是已经学习过的, 并且经过一定的练习, 学生已经掌握了加法运算。因此, 在解决减法问题时, 可以将减法映射到加法, 加法很容易计算出来, 再通过反演就可以轻松得出结果, 这样就把问题简单化了。
例如:7-4=?, 这道题对于刚刚接触减法的一年级学生来说要直接计算出结果还是比较困难的。因此, 可以将减法映射成加法来计算, 变为4+?=7。这样理解起来就容易多了, 运算起来也比较简单, 可以轻松地算出结果是4, 再反演到原问题, 就得到7-4=3, 这个过程其实就体现了RMI原则。
(2) RMI原则在20以内的进位加法中的渗透。一年级的学生在开始学习20以内的进位加法时, 思维一时可能还转换不过来, 因为他们的思维还停留在1+2=3这种简单的加法运算中。所以就要找到一种合适的转换, 让学生借助熟悉的知识来解决未知的问题, 于是就有了“凑十法”。运用“凑十法”, 学生可以轻松地解决20以内的进位加法问题, 这样就把复杂的问题简单化, 最终得出结果, 使原问题得以解决, 这就体现了RMI原则的基本思想。例如:9+3=?, 就可以利用“凑十法”轻松地算出。具体映射过程表示如下:
(3) RMI原则在两个多位数的加、减、乘、除运算中的渗透。我们来看这样一个例子:359+463=。这种类型的计算对于二三年级的学生来说直接口算是有一定难度的, 因为涉及到多位数的进位加法。因此, 需要借助一个很有用的数学工具来处理它, 那就是竖式计算。
同样, 在两个多位数的减法、乘法或除法运算中利用竖式计算也可将原问题简化。因为在竖式中能够较容易地计算出结果, 而且不容易出错, 最后通过反演将竖式计算的结果反演到横式中, 最终求出原问题的解。这是RMI原则的一个很巧妙的应用。
3. RMI原则在简易方程中的渗透。
现代数学教育越来越注重数学知识与实际生活的结合, 新数学课程标准的颁布也印证了这一点。新数学课程标准与以往的数学课程标准相比, 更加突出了数学的“实用性”, 在数学教材中也能深刻地体会到这一点, 大多数的例题、习题都是围绕我们现实生活环境来设题的, 使学生加深对数学知识的理解。因此, 解题的过程实际就是将实际问题映射到数学当中转化为具体的数学模型 (数学中各种基本概念、各种公式、定理以及各种算法系统都可称之为数学模型) , 通过对数学模型的研究得出相关结论, 再通过反演, 使原问题最终得以解决, 这个过程就体现了RMI原则的基本思想。在一定条件下, 利用数学模型解决实际问题的过程可以看作是RMI原则的一种应用, 在简易方程中就凸显了这一点。
例: (人教版小学五年级数学教材 (上册) , P66, 3)
故宫的面积是72万平方米, 比天安门广场面积的2倍少16万平方米, 请问天安门广场的面积是多少万平方米?
分析:这道题通过列代数式可以计算出结果, 但如果思路不清晰, 就可能会出现错误。因此可以利用设未知数的方法, 列出方程, 求解方程, 最后再赋予未知数以实际的意义, 将结果反演到实际问题中, 这样就可以轻松地将问题解决。这个过程就体现了RMI原则的基本思想, 具体求解过程如下:
解:设天安门广场的面积为x万平方米。
2x-16=72解得:x=44
答:天安门广场的面积为44万平方米。
三、小结
笔者认为上述所举实例的大多数所渗透的其实都是RMI原则的基本思想。因为按照严格意义来讲, 使用RMI原则的条件有三:一是所采用的映射须是两类数学对象之间的一一对应关系;二是所采用的映射须是可定映的, 即目标映象能通过确定的有限多个数学手续 (凡数学中使用的种种演绎推理、证明方法、计算方法等都称之为数学手续) 从映象关系结构系统中寻求出来;三是相对的逆映射 (反演) 必须具有可行性, 即通过目标映象能将目标原象的某种需要的性态经过有限步骤确定下来。但是, 在小学数学中关于映射的知识还没有很多的渗透, 因为学生的理解能力还没有达到能够理解映射这种比较高层次的数学对象的程度。但经上述的分析和整理后会发现, RMI原则的基本思想在小学数学内容中的很多方面都有所渗透。如果教师能加强自身对RMI原则理论的理解与掌握, 在教学中将其基本思想有意识地渗透给学生, 并鼓励学生运用RMI原则来解决问题, 这对学生更好地理解数学知识和解决数学问题有着很大的帮助, 并且可以使学生的数学思维上升到一个更高的层次。
由于笔者能力有限, 对于RMI原则在小学数学“数与代数”领域中的渗透的分析肯定还存有遗漏的地方, 望读者能够见谅。此外, RMI原则在其它三个领域 (空间与图形、统计与概率、实践与综合应用) 中的渗透也是值得研究与探讨的。笔者认为, 教师在教学实践中应善于发现与探索各种数学思想的运用并向学生不断强化, 使自己的教学与学生的学习变得更加有意义。
摘要:随着科学技术的迅速发展, 数学科学也在蓬勃地发展。人们开始认识到数学教育不仅仅是为了向学生传授数学知识, 更重要的是要培养学生的逻辑思维能力, 让学生在学习过程中体会数学思维方法的形成过程, 培养学生分析问题和解决问题的能力。关系映射反演原则 (简称RMI原则) 便是能够开发学生思维、激发学生学习数学的兴趣、培养学生分析和解决问题能力的一种数学思维方法。
关键词:RMI原则,小学数学,数与代数
参考文献
[1]徐利治.数学方法论选讲[M].武汉:华中工学院出版社, 1988:47.
[2]王林.小学渗透数学思想方法的实践与思考[J].课程教材教法, 2010, 30 (9) :53-58.
[3]小学数学[EB/OL].http://www.pep.com.cn/xxsx/.
RMI+ 篇4
Spring是一种为解决企业应用开发的复杂性而创建的开源代码。Spring使用基本的Java Bean来完成以前只可能由EJB完成的事情。简单来说,Spring是一个轻量级的控制反转(Io C)和面向切面(AOP)的容器框架。轻量即指从大小与开销两方面而言Spring都是轻量的,完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布;控制反转是指Spring通过一种称作控制反转(Io C)的技术实现了松耦合。此外,Spring框架结构还是基于Dependency Injection(DI)的设计模式,它可以独立或在现有的应用服务器上运行,而且大量地使用XML配置文件。
1 Maven
Maven是一种软件项目管理和集成工具,所有功能都是通过插件实现的。基于POM概念,Maven将项目的构建、编译、打包、测试、发布等开发过程有机地串联起来,产生一致的、高质量的项目信息反馈给项目开发者。
2 RMI
RMI(Remote Method Invocation)是Java的一组用户开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。Java RMI支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。RMI目前使用Java远程消息交换协议JRMP(Java Remote Messaging Protocol)进行通信。此外Java RMI开发的应用系统可以部署在任何支持JRE(Java Run Environment Java,运行环境)的平台上。
2.1 RMI(远程方法调用)的组成
一个正常工作的RMI系统由如下几个部分组成:
(1)远程服务的接口定义;
(2)远程服务接口的具体实现;
(3)桩(Stub)和框架(Skeleton)文件;
(4)一个运行远程服务的服务器;
(5)一个RMI命名服务,它允许客户端去发现这个远程服务;
(6)类文件的提供者(一个HTTP或者FTP服务器);
(7)一个需要该远程服务的客户端程序。
2.2 RMI(远程方法调用)的工作原理
RMI系统结构如图一所示:
方法调用从客户对象经占位程序(Stub)、远程引用层和传输层向下,传递给主。然后再次经传输层,向上穿过远程调用层和骨干网(Skeleton),到达服务器对象。占位程序扮演着远程服务器对象的代理角色,使该对象可被客户激活。远程引用层处理语义、管理单一或多重对象的通信,决定调用是应发往一个服务器还是多个。传输层管理实际的连接,并且追踪可以接受方法调用的远程对象。服务器端的骨干网完成对服务器对象实际的方法调用,并获取返回值。返回值向下经远程引用层、服务器端的传输层传递回客户端,再向上经传输层和远程调用层返回。最后,占位程序获得返回值。
2.3 Spring框架下远程访问技术
(1)使用Rmi Proxy Factory Bean和Rmi Service Exporter。Spring支持传统的RMI(使用java.rmi.Remote interfaces和java.rmi.Remote Exception)和通过RMI调用器透明地进行远程调用。
(2)Spring的HTTP调用器。Spring提供一种特殊的远程调用策略,支持任何Java接口,它允许Java序列化并通过HTTP传送。对应的支持类是Http Invoker Proxy Factory Bean和Http Invoker Service Exporter。
(3)Hessian。通过使用Hessian Proxy Factory Bean和Hessian Service Exporter,可以使用Caucho提供的轻量级基于HTTP的二进制协议透明地提供你的业务。
(4)JAX RPC(TODO)。
3 实例Account System
通过Rmi Service Exporter实现RMI机制,步骤如下:
(1)
加入Spring项目,生成Maven Dependencies(pom.xml)文件。
(2)创建远程接口
(3)配置服务器端业务
(4)配置Rmi Service Exporter业务
(5)配置客户端业务
4 结束语
Java RMI对于开发分布式系统具有强大的功能,结合Spring这种轻量级框架可以大大简化RMI编程步骤,提高开发效率。此外现代企业的信息资源广泛分布在各种网络体系中,这使得分布式企业应用成为构建企业信息环境的必然需求。因此RMI分布式模式有着广阔的应用前景。
摘要:RMI作为Java所支持的远程调用方法,被广泛应用于分布式系统开发。本文介绍了Java RMI的特点,以及在SPRING-Maven框架下RMI开发分布式应用的主要步骤,并以Account系统为例,简要说明了RMI远程对象访问、远程方法调用的原理和实现过程。
关键词:RMI,SPRING,MAVEN,RmiServiceExporter
参考文献
[1]Chad Darby,John Griffin,Pascal de Haan,etc.Ja-va网络编程指南(第一版)[M].北京:电子工业出版社,2002,7.
[2]Subrahmanyam Allamaraju,Cedric Buest,John Dav-ies,etc.J2EE编程指南(第一版)[M].北京:电子工业出版社,2002,3.
【RMI+】推荐阅读: