rmi编写网络应用程序
在Applet中调用RMI对象实现分布式网络计算
பைடு நூலகம்
( col f o p t fr a o n aae et Inr o gl i nead Sh o o m ue I o t nadM ngm n , n e M no aFn c n C rn m i i a
E o o isC l g ,H h o 0 0 7 cn m c ol e o h t 1 0 0,C ia e hn )
机应用。
服务 器 端 的 远 程 对 象 中 的方 法 。R 为 服 务 器 端 MI
c t n s se .T i a e x mp i e h yo a n si gAp ltt d p ai y tm o h sp p re e lf st ewa fh r e sn p e oa o tRMIt c iv it b tn ewo k i o a h e ed sr ui gn t r i
c mp t g o ui . n K e wo d RM I y rs ;Ap l t it b t d c mp tn p e ;d sr u e o u i g i
随着 网络技术 的发展 ,网络 日益变得复杂化、
分 布化 、不平衡 化 ,网络 资 源 的共 享 、负荷 的分 担
p r ew r i r ue p l ainss m, hc n a c s h blyo v eeo edsr ue p l uen t ok ds b tda pi t yt t i c o e w ih e h n e ea it f a at d vlpt i i tda pi t i j o h tb -
行 。为此 在分布 式计算 环境 中制定 了一些 共享 网络
计算 资源 的标准 和 协议 ,如 R C R mo rcdr P ( e t Poeue e Cl远程 过 程 调 用 ) 准 和 R P( e oeMesg g a l 标 M R m t sai n Pooo远 程消 息交换 ) 议等 。Jv rt l c 协 aa是一 门适 合 于 分布式 计算环 境 的语言 ,除 了具 有很 好 的安 全 性 和 可移植 性外 ,还提供 了丰 富的 网络类 库 ,利 用 这些
rmi和ldap协议
rmi和ldap协议RMI和LDAP协议引言:在计算机网络和系统中,协议是确保不同系统之间能够进行有效通信的关键。
RMI(远程方法调用)和LDAP(轻量级目录访问协议)是两种常用的网络协议。
本文将介绍RMI和LDAP协议的基本概念、作用以及它们在实际应用中的应用场景和注意事项。
一、RMI协议RMI(Remote Method Invocation)是一种允许在不同Java虚拟机上的对象之间进行远程调用的协议。
它提供了一种机制,使得在分布式系统中的对象能够像调用本地对象一样进行方法调用。
RMI 协议基于Java语言的反射机制,通过序列化和网络传输实现远程对象之间的通信。
RMI协议的作用:1. 远程调用:RMI协议允许在不同机器上的Java对象之间进行远程方法调用。
这使得分布式系统中的不同部分能够通过RMI协议进行通信,共享数据和资源。
2. 分布式计算:RMI协议为分布式计算提供了一种有效的机制。
通过RMI协议,可以在不同机器上部署不同的对象,实现任务的分发和并行处理。
3. 对象序列化:RMI协议通过对象的序列化和反序列化,将对象的状态在网络上传输。
这使得远程对象能够在不同机器上进行传递和复制。
RMI协议的应用场景:1. 分布式系统:RMI协议广泛应用于分布式系统中,例如基于Java 的Web应用程序和企业应用程序。
通过RMI协议,不同的分布式组件可以进行远程方法调用,实现数据和资源的共享。
2. 远程对象管理:RMI协议可以用于管理远程对象,例如远程管理服务器或远程配置服务器。
通过RMI协议,可以远程调用对象的方法,实现对远程对象的管理和配置。
3. 分布式计算:RMI协议可以用于实现分布式计算,例如在一个集群中同时处理大量的任务。
通过RMI协议,可以将任务分发给不同的节点进行并行处理,提高计算效率。
RMI协议的注意事项:1. 安全性:RMI协议的远程调用可能存在安全风险,例如远程代码执行和数据泄露。
基于Java RMI的网络管理系统
ad ky t hiu nl a zd R S i a paom—n ee d n n tok 1 3 n e e nq e i uigm ng m n frmo t ed i nl e . NM s l r idp ne t e r 1 1 c c eh y J f w 1 ・ 0
l 引 言
随 着 网络 结 构 的越 来 越 复杂 , 于 网 络管 理 系统 的 可扩 充 对 性 和跨 平 台性 要 求 越 来 越 高 如 网 络管 理 的不 同阶 段过 程 中对 于 计 费 功能 可 能 不 断 会 提 出不 同要 求 , 都 需 要 能够 对 正 在 使 这 用 的 网 络管 理 系 统 进 行 动态 修 改 。 早 期 的 网络 管 理 系统 多 是 基 于各 厂 商 的 通用 管 理 平 台 . 如 HP的 O n i IM 的 N Wiw、U 的 N t a ae 等 新 的 e p Ve B w、 e e SN eM n gr 网 络 管 理 系统 向 基 于 w e b的模 式 转 变 , A vn 的 N t o . 如 d et eM n i r I M 的 We Bn等 。基 于 we e t 和 B bi b的 网络 管 理 模式 虽然 在用 户端 实现 了简 单 化 和 标 准化 , 在 服 务器 端 却 尚未 形 成 通 用 平 但
a o t g sae d v n i e o k ma a e n e e d p n tt r e n n t r n g me t c i i w d
rmi方法
"RMI"可以指代多种不同的技术或概念,具体取决于上下文。
以下是几种可能的解释:1. 远程方法调用(Remote Method Invocation):在计算机网络编程中,RMI 是一种编程模型,它允许一个Java虚拟机(JVM)上的对象调用另一个JVM上对象的方法。
这种调用像是在进行本地方法调用一样简单直观,但实际上涉及到网络通信。
RMI使用了Java的序列化机制来传输对象状态,并支持不同类型的传输协议,包括Java RMI、HTTP、HTTPS等。
2. 报告管理接口(Report Management Interface):在企业应用程序中,RMI 可能指的是用于管理和处理报告的接口。
这些报告可能涉及财务数据、业务性能、客户信息等,并且可能用于决策支持系统(DSS)。
3. 资源管理接口(Resource Management Interface):在计算机系统管理中,RMI可能指的是用于管理系统资源的接口,如CPU、内存、存储等。
4. 反射性方法调用(Reflective Method Invocation):在某些编程框架中,RMI可能指的是使用反射机制来调用方法的方式。
反射机制允许程序在运行时检查和修改其结构和行为。
如果你指的是远程方法调用(RMI),那么在Java中使用RMI通常涉及以下步骤:- 创建一个远程接口,该接口扩展了Java的Remote接口,并定义了需要远程调用的方法。
- 实现这个远程接口,并将实现类暴露给网络。
- 在客户端,创建这个远程接口的代理对象,通过网络调用远程服务器上的方法。
为了使用Java RMI,还需要使用Java RMI库中的类和方法来配置和启动网络通信。
这可能包括使用RMISocketFactory来创建套接字,以及使用RMIContext 来管理安全性和其他网络通信的细节。
请注意,随着Java技术的不断发展,RMI可能不再是唯一的远程调用解决方案,其他技术如Web服务(SOAP和RESTful)、消息传递(如RabbitMQ和Apache Kafka)等,也可能用于实现分布式系统中的远程方法调用。
rmi实验
计算机网络程序设计实验报告实验题目:RMI远程调用学院计算机学院专业网络工程班级网络 121姓名学号2015年 5 月 16日一、实验名称Rmi远程调用,实现几种算法。
二、实验目的和要求熟悉和掌握Java RMI编程的基本方法和步骤三、开发环境操作系统:WindowsXP开发工具:MyEclipse Java版本:四、实验内容和结果1、程序整体功能编写rmi客户端和服务器程序,服务器端提供加、减、乘、除四个远程接口,客户端通过RMI调用接口并传入参数,服务器端计算结果,返回给客户端,客户端显示这个值。
2、设计思路说明1.编写并且编译接口的java代码2.编写并编译接口实现的Java代码;3.从接口实现类种生成桩和框架类文件;4.编写远程服务主程序;5.编写RMI的客户端程序;6.安装并且运行RMI系统。
3、重要类、数据结构、模块/函数算法说明接口类实现远程服务的功能类接口具体实现3.主机服务器 CctServer4.客户端 Client4、程序清单1.package rmi;import public interface Cct extends Remote {public long add(long a,long b) throws public long sub(long a,long b) throws public long mul(long a,long b) throws public long div(long a,long b) throws rmi;import class CctIm extends UnicastRemoteObject implements Cct{private static final long serialVersionUID = 695011L;protected CctIm() throws RemoteException {super();// TODO 自动生成的构造函数存根}public long add(long a,long b) throws return a+b;}public long sub(long a,long b) throws return a-b;}public long mul(long a,long b) throws return a*b;}public long div(long a,long b) throws return a/b;}}3package rmi;import class CctServer {public CctServer(){try{(1099);Cct c = new CctIm();("",c);}catch (Exception e){"Trouble :"+e);}}public static void main (String args[]){new CctServer();}}4package rmi;import public class Client {public static void main(String[]args){while(true){try{Cct c=(Cct)("");"请输入您要计算的类型:");String a1="+";String a2="-";String a3="*";String a4="/";String a6="0";"+ - * / 0");"请输入运算符:");Scanner a=new Scanner;String a5=();long b=();long d=();if(a1))else if(a2))else if(a3))if(a4))else if(a6))//"程序结束!");(0);}catch(RemoteException | MalformedURLException | NotBoundException re){"remoteException");}}}}五、实验运行及测试结果六、实验中的问题及心得实验中存在很多问题,只有慢慢尝试才能得出结论,实验就得自己去尝试。
RMI系统原理及使用方法
RMI系统原理及使用方法论文导读:Java作为一种风靡一时的网络开发语言,其巨大的威力就体现在它强大的开发分布式网络应用的能力上,而RMI就是开发百分之百纯Java的网络分布式应用系统的核心解决方案之一。
关键词:RMI,JAVA,分布式远程方法调用Java RMI(RomoteMethod Invocation 远程方法调用)是用Java在JDK1.1中实现的,它大大增强了Java开发分布式应用的能力。
其实它可以被看作是RPC的Java版本。
但是传统RPC并不能很好地应用于分布式对象系统。
而Java RMI则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。
RMI目前使用Java远程消息交换协议JRMP(Java Remote Messaging Rrotocol)进行通信。
JRMP是专为Java的远程对象制定的协议。
因此,Java RMI具有Java的”Write Once,Run Anywhere”的优点,是分布式应用系统的百分之百纯Java解决方案。
用Java RMI开发的应用系统可以部署在任何支持JRE的平台上。
发表论文。
但由于JRMP是专为Java对象制定的,因此,RMI对用用非Java语言开发的应用系统的支持不足。
不能与用非Java语言书写的对象进行通信。
RMI系统原理RMI应用程序通常包括两个独立的程序:服务器程序和客户机程序。
典型的服务器应用程序将创建多个远程对象,使这些远程对象能够被引用,然后等待客户机调用这些远程对象的方法。
而典型的客户机程序则从服务器中得到一个或多个远程对象的引用,然后调用远程对象的方法。
RMI为服务器和客户机进行通信和信息传递提供了一种机制。
在与远程对象的通信过程中,RMI使用标准机制:Stub和Skeleton。
远程对象的Stub担当远程对象的客户本地代表或代理人角色。
发表论文。
调用程序将调用本地Stub的方法,而本地Stub将负责执行对远程对象的方法调用。
RMI和socket详解
RMI和socket详解⼀般来说,基于CS(client-server)软件架构的开发技术有很多种。
⽐较常⽤的有:基于socket的⽹络编程、RPC、基于Java技术的RMI(当然C#也有类似技术)、CORBA 等。
在这⾥我们只是对基于socket的⽹络编程与RMI作个对⽐,有助于我们了解它们各⾃的应⽤领域,帮助我们在⾯对⼀个具体问题的时候选⽤适合的技术。
另外,本⽂所做的讨论可以认为是脱离了语⾔层⾯的东西,只是对技术的本⾝做⼀个讨论,⽆关乎你是⽤C++、C#或Java 在开发。
⼀、RMI技术简介本⽂就以Java为例,简单介绍⼀下RMI技术。
从Java1.1开始,远程⽅法调⽤作为Java分布式对象技术成为Java核⼼的API之⼀(在java.rmi.* 包)。
RMI的引⼊,使得Java程序之间能够实现灵活的,可扩展的分布式通信。
RMI允许Java对象存在于多个不同的地址空间,分布在不同的Java虚拟机上。
每⼀个地址空间可以在同⼀台主机上或者⽹络上不同的计算机上。
由于远程⽅法调⽤跨越不同的虚拟机边界到不同的指定的地址空间,所以没有对象共享的全局变量,这就需要对象序列化(Object Serialization)API,它使得Java对象能够在不同的JVM之间传递。
对象序列化是特别为Java的对象设计的,这就意味着Java程序中的对象可以作为对象参数存取(可序列化的对象必须实现Serializable接⼝)。
结合RMI和对象序列化机制,就可以访问越过本地Java虚拟机边界的对象以及数据。
通过RMI,可以调⽤远程对象的远程⽅法,⽽通过Java对象序列化机制可以将对象传递给这些⽅法。
最基本的Java模型并没有提供将远程主机上的Java对象看作本地Java程序地址空间⼀部分的能⼒,⽽RMI祢补了这⼀不⾜。
另外,由于Java与硬件平台⽆关的特性,⽆论是同构的系统还是异构的系统,RMI不需移植就可以顺利运⾏。
RMI为Java平台的分布式计算提供了⼀个简单⽽直接的模型。
RMI 的运行逻
RMI 的运行逻
RMI(远程方法调用)是一种在分布式系统中进行远程通信的技术,其运行逻辑如下:
客户端调用远程对象方法:客户端通过本地接口调用远程对象的方法,就像调用本地对象一样。
1.Stub 封装调用参数:本地接口的实现对象,也就是Stub,会将客户端调用方法的参数进行封装,以便进行传输。
2.远程传输:Stub 将封装好的参数通过网络传输给远程对象,即服务器端的Skeleton。
3.Skeleton 解封装参数:Skeleton 接收到远程传输的参数后,将其解封装,并调用实际的远程对象方法进行处理。
4.远程方法调用:远程对象执行客户端请求的方法,返回结果。
5.Skeleton 返回结果:Skeleton 将远程对象执行方法的结果封装,通过网络传输回客户端。
6.Stub 接收结果:Stub 接收到远程传输的结果后,将其解封装,返回给客户端。
RMI 的运行逻辑可以简单地概括为客户端通过本地接口调用远程对象方法,而Stub 和Skeleton 则负责将调用参数和结果进行封装和解封装,并进行网络传输。
这种运行逻辑使得远程方法调用看起来像是本地方法调用一样简单,同时也可以在分布式系统中实现不同节点之间的通信,方便地进行远程操作和数据传输。
rmi
服务器端
import .MalformedURLException; import java.rmi.AlreadyBoundException; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry;
接口的实现
2.实现远程对 实现远程对 象(服务器端 程序) 程序)
import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class TestInterfaceRemoteImpl extends UnicastRemoteObject implements TestInterfactRemote { public TestInterfaceRemoteImpl() throws RemoteException { super(); } public int add(int a, int b) throws RemoteException { return a+b; }
} catch (MalformedURLException e) { System.out.println("错误的地址!"); e.printStackTrace(); } catch (RemoteException e) { System.out.println("创建远程对象出错!"); e.printStackTrace(); } catch (NotBoundException e) { System.out.println("未绑定的远程对象!"); e.printStackTrace(); }
rmi利用原理
rmi利用原理
RMI利用原理
RMI(Remote Method Invocation)是一种远程服务调用技术,
它可以让客户端的一个程序调用另一台服务端的 Java 程序,而不必关心跨网络的底层细节,也无需为客户端和服务器之间的数据传输提供特殊的处理。
RMI 可以在不同的计算机系统之间传递 Java 对象,而且不需要客户端和服务器之间的网络层协议。
它使用Java 平台独有的反射机制来实现远程方法调用,由于Java 平台的跨平台特性,客户端和服务器之间的通信可以跨越不同的操作系统和网络协议,使得 RMI 更
加强大。
RMI利用原理的核心是一个叫做 RMI registry 的元数据服务,它可以在服务器端动态生成一个名为 URL 的 Javabean,该Javabean 包含了服务器的 IP 地址和端口号,客户端可以通过该Javabean 来访问服务器端,调用服务器端的方法。
RMI registry 还可以用于服务器端对远程对象的调用,客户端
可以通过注册的远程对象来访问服务器端的方法,实现远程方法调用。
此外,RMI 还可以支持客户端和服务器端之间的消息传输,使得客户端和服务器端之间可以通过消息传输来进行数据传输。
总之,RMI 是一种非常强大的远程服务调用技术,它支持跨越不同的操作系统和网络协议的远程方法调用,可以支持客户端和服务器端之间的消息传输,可以为企业系统的架构提供强大的远程数据访问
能力。
RMI实例详解
RMI实例详解1.功能需求:实现最简单的远程文件访问。
Client能够获取在Server上的远程文件信息。
实例代码中,客户端获取了服务器端的文件“D:\\test\testDate.java”的内容和文件名。
2.实现结构:a)Server包含:i.FileInformation.java 描述文件信息的接口,作为远程访问方法的返回值类型ii.FileInformationImple.java 描述文件信息的接口实现iii.Hello.java 提供的远程访问方法的接口iv.HelloImple.java 远程访问方法的接口实现v.Server.java 服务器开启程序b)Client 包含:i.FileInformation.java描述文件信息的接口(与上同)ii.Hello.java提供的远程访问方法的接口(与上同)iii.Test.java 客户端的运行程序3.服务器端实现的具体步骤:a)设计远程接口涉及的参数类型接口b)设计远程接口c)实现参数类型接口d)实现远程接口e)编写服务器启动程序4.编写客户端测试用例5. 执行程序:可以在eclipse 中直接执行,但是必须先运行服务器,再运行客户端。
也可以在命令行下运行。
次序要求同在eclipse 中。
步骤如下:(1) 打开一个Dos 窗口,执行命令java rmi.Server 启动服务器。
启动成功会在命令行显示“Server start!”(2) 打开另一个Dos 窗口,执行命令java rmi.Test 运行客户端程序。
运行成功则会在屏幕打印“D:\\test\testDate.java ”的文件内容。
6. 注意事项(1) 本实例中并没有用到JDK所带的命令 rmic编译实现类得到存根(Stub)类,也没用命令 rmiregistry 命令来启动RMI 注册服务。
在启动 rmiregistry 之前必须能让它加载到相应的stub 类,这就是造成**_Stub 类找不到的原因。
rmi编程实例 -回复
rmi编程实例-回复RMI编程实例:RMI(远程方法调用)是一种使分布式应用程序能够在不同的计算机上通过网络进行方法调用的技术。
它允许开发人员创建分布式应用程序,其中各个部分可以在不同的机器上运行并进行通信。
本篇文章将通过一步一步的方式,为读者提供一个简单的RMI编程实例,以演示它的用法和潜力。
第一步:定义接口在RMI编程中,首先需要定义一个接口,该接口将包含要调用的远程方法。
让我们以一个名为"Calculator"的简单接口为例:javaimport java.rmi.Remote;import java.rmi.RemoteException;public interface Calculator extends Remote {int add(int x, int y) throws RemoteException;}在上面的例子中,我们定义了一个具有add方法的接口Calculator。
此方法将返回两个整数的和,并可能引发远程异常。
使接口扩展Remote接口是必需的,以确保它可以在远程系统之间进行通信。
第二步:实现接口接下来,我们需要实现上述接口。
创建一个名为"CalculatorImpl"的类,并实现Calculator接口中的所有方法:javaimport java.rmi.RemoteException;import java.rmi.server.UnicastRemoteObject;public class CalculatorImpl extends UnicastRemoteObject implements Calculator {protected CalculatorImpl() throws RemoteException {super();}Overridepublic int add(int x, int y) throws RemoteException {return x + y;}}在上述示例中,我们创建了CalculatorImpl类,并扩展了UnicastRemoteObject。
RMI原理及实现
Stub 和 Skeleton 之间通过远程调用层进行相互通讯,远程调用层遵循 TCP/IP 协议收发 数据。下面我们来大致了解一种称为为“绑定”的技术。
?远程客户端:这是一个帮助我们访问远程方法提供帮助的类,它也是最终用户。 我们将使用查找和调用远程方法的方法在该类中调用远程方法。
编程 我们将首先编写远程对象,并将代码保存为名字为 AddServer.Java 的文件: import Java.rmi.*; public interface AddServer extends Remote { public int AddNumbers(int firstnumber,int secondnumber) throws RemoteException; } 我们来看看上面的代码。首先,为了使用其内容,我们导入 rmi 包。然后,我们创
C:\jdk\bin\Javac workingdir\RmiClient.Java 在对我们的代码进行测试前,还必须首先启动 RMI Registry。RMI Registry 存储有 所有绑定的数据,没有它,RMI 就不能正常地运行! 启动 Rmi Registry 服务器: C:\jdk\bin\start rmiregistry 我们会注意到,这时会出现一个空白的 DOS 提示符窗口,这表明 Rmi Registry 服 务器在运行,注意不要关闭该窗口。然后,我们首先在一个 DOS 提示符窗口中运行 Rmi 服 务器,然后在另一个 DOS 提示符窗口中运行 Rmi 客户端。 启动 RMI 服务器:
在Eclipse中开发RMI
在Eclipse中开发RMI教程作者:godelegant个人博客:目前,网络上的RMI资料大部分为极简单的例子,且需要手动进行编译、运行,开发相当麻烦。
如果你想更深入学习RMI开发,这样的例子只能让你对RMI有所了解,但要真正方便的开发RMI,你需要了解更多。
1、RMI的运行机制RMI服务端用于客户端调用的对象注册到RMI注册服务器中,客户端通过占位程序(Stub)与服务端的Skeleton通讯,调用服务端的远程对象的方法。
所以在进行RMI开发及测试的一般流程是:1)服务端、客户端代码实现2)使用rmic编译器,获取Stub和Skeleton3)启动注册服务器4)绑定服务对象5)客户端调用下面会按照这个流程来进行讲解。
2、开发前的准备工作在Eclipse中开发RMI时,可以使用插件RMI plugin for eclipse v2.0(URL: /rmi/v20/update/),下载并安装到eclipse;安装及调试可以参看该插件的教程。
编号启动RMI注册器的代码,如下:String cmd = System.getProperty("java.home") + "\\bin\\"+ "rmiregistry.exe";WindowsProcess exec = new WindowsProcess(cmd);exec.start();try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}使用的WindowsProcess是一个工具类,用于在windows环境下执行exe文件。
原码如下:public class WindowsProcess extends Thread{String cmd = "";public WindowsProcess(String cmd){this.cmd = cmd;}public void run() {log("using WindowsProcess execute \"" + cmd + "\"");if (cmd == null || cmd.length() < 1) {log("command's length lt 1,exit.");System.exit(1);}Runtime rt = Runtime.getRuntime();int exitVal = 0;try {Process proc = rt.exec(cmd);StreamGobbler sgError = newStreamGobbler(proc.getErrorStream(),"ERROR");StreamGobbler sgOutput = newStreamGobbler(proc.getInputStream(),"OUTPUT");sgError.start();sgOutput.start();exitVal = proc.waitFor();log("exitVal: "+exitVal);} catch (Exception e) {log(e.getMessage());}}public void log(String msg) {SimpleDateFormat sdf = new SimpleDateFormat("[yyyy-MM-dd hh:mm:ss] ");System.out.println(sdf.format(new Date()) + msg);}class StreamGobbler extends Thread {InputStream is;String type;StreamGobbler(InputStream is, String type) {this.is = is;this.type = type;}public void run() {try {InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);String line = null;while ((line = br.readLine()) != null)log(type + ">" + line);} catch (IOException ioe) {ioe.printStackTrace();}}}}这样就可以在Eclipse环境中运行rmiregistry.exe,且可以在console中查看执行情况。
基于RMI技术的远程词典应用
基于RMI技术的远程词典应用1.情景描述假设有一台应用服务器以RMI的方式向客户端提供英汉互译词典的服务,请尝试完成服务器端程序的编码和一个客户端应用,并分别部署到两台计算机上进行测试。
2.RMI简介RMI(指远程方法调用)是Remote Method Invocation的简称,是一种远程方法调用机制,其过程对于最终用户是透明的。
RMI包含两种组件:RMI服务器和RMI客户。
RMI有三层架构:Stub/Skeleton层、远程引用层和传输层。
开发RMI需要以下步骤:1)根据应用的需要定义远程接口;2)定义和实现服务器类,其中要实现远程接口中声明的远程方法;3)定义与实现客户类;4)完成上述类文件的编程之后,编译源文件生成相应的类文件;5)生成Stub和Skeleton;6)创建安全策略;7)启动RMI远程注册表;8)启动服务器;9)启动客户,完成应用。
3.基于RMI技术的远程词典应用的实现在实现基于RMI技术的远程词典应用的过程中,主要实现了三部分:定义的远程接口,实现远程接口以及服务器端应用服务实现,应用客户端的图形实现。
(1)远程接口的实现在远程接口的类中,声明了一个返回字符串的translator方法。
实现的代码如下:package translatorInterface;import java.rmi.Remote;import java.rmi.RemoteException;/*** @author 苑仁群*@since 2012.6.4*/public interface TranslatorIn extends Remote{/**** @param word 输入待查询的单词* @return 返回所查单词的结果* @throws RemoteException*/public String translator(String word)throws RemoteException;}(2)应用服务端实现在应用服务端实现了定义的远程接口,并且进行了服务端端口的注册,以及通信路径的注册。
创建RMI总结应用的步骤
创建RMI总结应用的步骤创建RMI总结应用的步骤2009年09月05日星期六 17:20分布式/RMI 2009-06-08 21:39创建一个rmi应用主要包括以下步骤:1 创建远程接口:继承java.rmi.Remote接口2 创建远程类:实现远程接口3 创建服务器程序:负责向rmiregistry注册表中注册远程对象4 创建客户程序:负责定位远程对象,并且调用远程对象的方法(一)创建远程接口(1)直接或间接继承java.rmi.Remote接口(2)接口中所有方法声明抛出java.rmi.RemoteExeption远程方法调用依赖于网络通信,一旦服务器或客户端有一方突然断开连接,或者网络出现故障,通信就会失败。
RMI框架会把遇到的网络故障通信失败转化为RemoteException,客户端可以捕获这种异常并进行处理package hello;import java.rmi.Remote;import java.rmi.RemoteException;import java.util.Date;public interface HelloService extends Remote{String echo(String msg)throws RemoteException;Date getTime()throws RemoteException;}创建远程接口时,还可以采用以下方式:public interface A {String echo(String msg)throws IOException;Date getTime()throws Exception;}public interface B extends A,Remote{}以上接口A不是远程接口,而子接口B是远程接口。
由于A中声明的方法抛出的异常都是RemoteException的父类,因此这些方法在接口B中都可以作为远程方法。
2021年RMIS5-0项目软件部署-手工部署应用域
RMIS5.0项目软件部署-手工部署应用域适用场景⚫RMIS产品集成到已有weblogic应用域下。
部署步骤1、将安装盘\webserver\webapps下的文件复制到weblogic的域目录的\applications下;2、将安装盘\webserver\lib下的文件分别复制到weblogic的域目录的\applications\AF\WEB-INF\lib下和\applications\UR\WEB-INF\lib下,但要删除其中的jsp-api.jar文件;3、在\bea\user_projects\domains\mydomain\applications\UR\WEB-INF路径下找到weblogic.xml文件,删除<context-root>/</context-root>后保存。
4、登录weblogic的控制台,手工配置数据源、连接池和部署WEB应用,具体方法参见数据库连接说明部分。
数据库连接1、登录weblogic控制台:打开IE在地址栏中输入:http://127.0.0.1:7001/console,回车确定。
弹出以下页面。
填入用户名和密码,点击“Sign In”,弹出如下页面。
2、配置数据库连接池:进入mydomain—JDBC Connection Pools,如下图,按照图片进行操作。
名称不可更改3、配置数据源信息:进入mydomain—JDBC Data Sources,如下图,按照图片进行操作。
名称不可更改注意:JNDI Name: webglDS,要区分大小写,第五个字母是”L”的小写。
截止此步所有部署工作全部完成,登录IE地址http://127.0.0.1:7001/UR成功进入RMIS系统!特别说明⚫与外系统集成使用时,还需配合《RMIS与外系统的集成方法.doc》文档使用;⚫RMIS安装盘中的门户程序包AF,可选择使用并部署。
介绍一下RMI的基本概念
什么是RMIRMI(Remote Method Invocation)远程方法调用是一种计算机之间对象互相调用对方函数,启动对方进程的一种机制,使用这种机制,某一台计算机上的对象在调用另外一台计算机上的方法时,使用的程序语法规则和在本地机上对象间的方法调用的语法规则一样。
RMI的用途1、分布式体系结构为什么要使用分布式计算呢?当我们想与多个用户或客户机共享一个中央资源(如一个数据库)时,就会使用分布式计算。
分布式计算用来利用多个系统的组合计算能力,以便比在单个系统上更有效或更快地解决问题。
可以用多种方法配置多个计算机系统以共享处理,包括共享内存、共享磁盘或只是共享一条公共通信通道。
最新的技术允许物理上相隔很远的系统能够在处理计算问题时协同工作。
关于利用计算能力这一主题,因特网及伴随的通信协议 TCP/IP 的出现已使无数的计算机系统史无前例地连接起来。
对一些应用程序来说,能够利用如此多的计算功能来解决问题是令人满意的。
甚至更吸引人的是,大多数计算机系统都有充足的空闲时间,可以帮助解决其它问题。
将来,网格计算会利用分布式计算能力进行出售,这与电力行业出售电能非常相似。
2、Java分布式对象编程技术RMI是Enterprise JavaBeans的支柱,是建立分布式Java应用程序的方便途径。
只要按照RMI规则设计程序,可以不必再过问在RMI之下的网络细节了,如:TCP和Socket等等。
任意两台计算机之间的通讯完全由RMI负责。
调用远程计算机上的对象就像本地对象一样方便。
RMI应用程序分类依据RMI应用程序各部分职责,可对应用程序进行如下分类:服务器程序:服务器程序将创建多个远程对象,并使每个对象能够被引用。
等待客户端调用创建好的远程对象上的方法。
客户端程序:从服务端程序中得到一个或多个远程对象的引用。
客户端能用此引用调用远程对象上的方法。
对等计算程序:双方地位相等,互为对方的服务器和客户端。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
就是awt下的Grahpics和swing包,应用程序编程必学,io下面也是极其重要的内容,再就到了网络编程方面,刚开始接触到
的是Socket编程,初学Java两个月便用Socket编程写"四国大战"(因为我对联众四国大战特有兴趣),写这个游戏整整花了
}
public void appendChatContent(String msg)
{
HTMLEditorKit kit = (HTMLEditorKit)(this.viewer.getEditorKit());
Document doc = this.viewer.getDocument();
//实现自动滚动
if(this.viewer.getSelectedText()==null||this.viewer.getSelectedText().trim().length()==0)
{
this.viewer.select(this.viewer.getText().length(),this.viewer.getText().length());
}
private void initializedComponent()
{
this.viewer = new JTextPane();
this.viewer.setContentType("text/html;charset=gb2312");
this.viewer.setEditable(false);
appendChatContent(String msg).让我们来先"搞定"这个接口ChatViewerInterface:
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface ChatVieweห้องสมุดไป่ตู้Interface extends Remote
我一个月时间,每天是上课编程,下课编程,每天晚上忙到12点,甚至做梦也在编程,一个月后,整完了,四国大战也可以正常
开战了,心里乐滋滋的,这就是编程的乐趣.然而初学两个月的Java(Java是我学习的第一门而向对象的编程语言),写出来
的东西结构混乱不堪,用记事本写的几千行的代码搞得我连加功能都不知道去哪儿,于是我决定对其进行改版,这回我选择
}
}
class LinkListener implements HyperlinkListener
{
public void hyperlinkUpdate(HyperlinkEvent e)
{
if(e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
this.chat = new ChatViewer("<font color='blue'>欢迎进入聊天室</font>");
this.msgeditor = new JTextField();
this.msgsender = new JButton("发送");
this.panel = new JPanel();
{
if(e instanceof HTMLFrameHyperlinkEvent)
{
HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent)e;
HTMLDocument doc = (HTMLDocument)(viewer.getDocument());
料的偶然,我看到了RMI,带着好奇心,我看了入门,这时我有这么一个感觉,这个东东能不能帮我实现网络对话,而不用自已
写协议?果然,它能做到!我感觉到Java实在是太强大了,使用RMI写网络应用程序,不用自已设计协议,不用自己考虑数据安全,
不用考虑网络防火墙.我的血液沸腾了.用两天看完RMI基础,测试了Hello, world后,我操起了RMI继续我的游戏系统"革命".
System.exit(0);
}
this.initializedComponent();
this.fireEvent();
this.registChatViewer();
}
private void initializedComponent()
{
{
super("简易聊天室");
try{
this.server = Naming.lookup("rmi://"+serveraddress+":"+port+"/ChatServer");
}catch(Exception e){
System.out.println("不能连接到服务器.");
import java.text.*;
public class ChatViewer extends JComponent implements ChatViewerInterface,Serializable
{
JScrollPane scrollpane;
JTextPane viewer;
然后我们写一个窗口,来完成客户端的工作.在这个类中,我们要用一个按钮来向服务器发送消息,服务器也是一个远程
对象,我们把这个类命名为ServerForChat,它也实现一个远程接口ServerForChatInterface.在写完这些代码后,我们来
一起看看它们是怎么工作的.
import java.awt.*;
this.viewer.addHyperlinkListener(new LinkListener());
this.scrollpane = new JScrollPane(this.viewer);
this.setLayout(new BorderLayout());
this.add(this.scrollpane,BorderLayout.CENTER);
import java.awt.event.*;
import javax.swing.*;
public class ClientForm extends JFrame
{
private ChatViewer chat;
private JTextField megeditor;
}
}
public void sendToServer()
{
try{
UnicastRemoteObject.exportObject((ChatViewerInterface)this);
}catch(Exception e){
System.out.println("send object to server error: "+e.getMessage());
的服务器需要知道往哪几个聊天内容显示区域中发送消息,于是,聊天内容显示域必须在服务器上注册.因此它必须是可以序
列化到服务器的.为让服务器可以给它发送消息,它必须有一个可以在远程调用的方法,于是它本身得实现Remote接口,而Remote
接口是空接口,于是,我们得写一个接口继承Remote接口,在这个接口中,我们声明一个可以在服务器端调用的方法:
在这儿,我不准备详细介绍我的游戏系统,因为我还没有时间去完全实现它的功能.在这里我想通过一个简单的网络应用(聊
天室)来向各位初涉RMI介绍RMI.
第一步,让我们来看看聊天室能做些什么.我们的聊天室准备实现最简单的功能,大家一起聊天.于是客户端需要一个显示
聊天内容的文本域,一个发送消息的文本框,和一个发送按钮.为支持HTML语法消息,刚才的文本域可以使用JTextPane;我们
private JButton msgsender;
private Container contentpane;
private JPanel panel;
private ServerForChatInterface server;
public ClientForm(String serveraddress,int port)
this.panel.setLayout(new BorderLayout());
this.panel.add(this.msgeditor,BorderLayout.CENTER);
this.panel.add(this.msgsender,BorderLayout.EAST);
this.contentpane = this.getContentPane();
doc.processHTMLFrameHyperlinkEvent(evt);
}
else
{
try {
Runtime.getRuntime().exec("explorer "+e.getURL());
}
catch(Exception ioe) {
import java.rmi.*;
import java.rmi.server.*;
import javax.swing.*;
import java.io.*;
import javax.swing.text.*;