远程方法调用
java专用名词
1、jvm(java virtual machine):JVM是一台抽象的计算机,就像真实的计算机那样,它们会先将.java文件编译成.class文件(.class文件就是字节码文件),然后用它的解释器来加载字节码。
2、EJB(Enterprise Java Bean):相当于DCOM,即分布式组件。
它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。
但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。
EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。
客户通过容器来访问真正的EJB组件。
3、RMI(Remote Method Invocation,远程方法调用):是用Java在JDK1.1中实现的,它大大增强了Java开发分布式应用的能力。
4、Java Message Service(JMS)是一个JAVA API,用来访问面向消息中间件(MOM)服务。
JMS为Java程序生成、发送、接收和读取异步消息提供通用的方法。
JMS模型:点到点和发布与订阅point-to-point——消息通过队列进行发送。
消息由消息生产者(客户端)放入队列中。
消息消费者有责任从队列中取出消息。
当给定的消息只能被给定的消费者接收时,使用P2P。
这种情况下,该给定信息只有一个消费者。
Publish-and-subscribe(简称pub/sub)——消息通过标题传递。
由生产者将消息发布为标题。
消息可以被任何订阅该标题的消费者收到。
通过这种方法,一个消息可以被多个消费者接收或处理。
5、ORM对象-关系映射(Object-Relation Mapping)模式是指在单个组件中负责所有实体域对象的持久化,封装数据访问细节6、JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。
远程调用的原理
远程调用的原理远程调用是一种在分布式系统环境下,通过网络进行进程之间通信的技术手段。
它的原理是通过一定的网络协议和通信方式,使得一个进程(客户端)能够调用另一个进程(服务端)上的方法,从而实现跨网络的方法调用。
远程调用的原理可以分为以下几个步骤:1. 客户端发起方法调用:客户端通过网络向服务端发起方法调用请求。
请求通常包括要调用的方法名、参数等信息。
2. 网络传输:客户端将方法调用请求通过网络发送给服务端。
网络传输可以使用各种协议,如HTTP、TCP/IP等。
3. 服务端接收请求:服务端接收来自客户端的方法调用请求。
4. 方法执行:服务端根据请求中的方法名和参数等信息,找到相应的方法并执行。
5. 返回结果:服务端将方法执行的结果返回给客户端。
6. 客户端接收结果:客户端接收到服务端返回的方法执行结果。
远程调用的实现有多种方式,常见的有:RPC(Remote Procedure Call)和RESTful API(Representational State Transfer)。
RPC是一种比较传统的远程调用方式,它使用了类似于本地方法调用的语义,客户端调用代理对象的方法,代理对象负责将方法调用序列化成网络可以传输的格式,并发送给服务端,服务端接收到请求后将调用结果反序列化并返回给客户端。
RESTful API是一种基于HTTP协议的远程调用方式,它通过HTTP的不同方法(GET、POST、PUT、DELETE等)和不同的URL路径来表示不同的资源和操作。
客户端可以通过发送HTTP请求来调用服务端的方法,服务器端返回HTTP响应来传递结果。
总的来说,远程调用通过网络实现了进程之间的方法调用,可以跨越物理位置和不同的系统平台。
它是分布式系统中实现通信和协作的重要手段之一。
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的基本概念
什么是RMIRMI(Remote Method Invocation)远程方法调用是一种计算机之间对象互相调用对方函数,启动对方进程的一种机制,使用这种机制,某一台计算机上的对象在调用另外一台计算机上的方法时,使用的程序语法规则和在本地机上对象间的方法调用的语法规则一样。
RMI的用途1、分布式体系结构为什么要使用分布式计算呢?当我们想与多个用户或客户机共享一个中央资源(如一个数据库)时,就会使用分布式计算。
分布式计算用来利用多个系统的组合计算能力,以便比在单个系统上更有效或更快地解决问题。
可以用多种方法配置多个计算机系统以共享处理,包括共享内存、共享磁盘或只是共享一条公共通信通道。
最新的技术允许物理上相隔很远的系统能够在处理计算问题时协同工作。
关于利用计算能力这一主题,因特网及伴随的通信协议 TCP/IP 的出现已使无数的计算机系统史无前例地连接起来。
对一些应用程序来说,能够利用如此多的计算功能来解决问题是令人满意的。
甚至更吸引人的是,大多数计算机系统都有充足的空闲时间,可以帮助解决其它问题。
将来,网格计算会利用分布式计算能力进行出售,这与电力行业出售电能非常相似。
2、Java分布式对象编程技术RMI是Enterprise JavaBeans的支柱,是建立分布式Java应用程序的方便途径。
只要按照RMI规则设计程序,可以不必再过问在RMI之下的网络细节了,如:TCP和Socket等等。
任意两台计算机之间的通讯完全由RMI负责。
调用远程计算机上的对象就像本地对象一样方便。
RMI应用程序分类依据RMI应用程序各部分职责,可对应用程序进行如下分类:服务器程序:服务器程序将创建多个远程对象,并使每个对象能够被引用。
等待客户端调用创建好的远程对象上的方法。
客户端程序:从服务端程序中得到一个或多个远程对象的引用。
客户端能用此引用调用远程对象上的方法。
对等计算程序:双方地位相等,互为对方的服务器和客户端。
java方法跨系统调用方法
java方法跨系统调用方法Java作为一种广泛应用于企业级应用的编程语言,其跨系统调用方法的使用十分重要。
在企业级应用中,常常需要调用其他系统的功能,比如数据库、消息队列等,而跨系统调用方法可以帮助我们方便地实现这些功能。
本文将介绍Java中跨系统调用方法的实现方式。
一、Java中的跨系统调用方法Java中的跨系统调用方法主要有以下几种:1. 远程方法调用(Remote Method Invocation,简称RMI)RMI是Java中的一种机制,允许在不同的Java虚拟机之间进行远程方法调用。
通过RMI,我们可以在一个Java虚拟机中调用另一个Java虚拟机中的对象的方法,而不需要进行任何网络编程。
RMI 使用Java的序列化机制来传递参数和返回值。
2. Java消息服务(Java Message Service,简称JMS)JMS是一种Java中的消息传递规范,用于在不同的Java应用程序之间传递消息。
JMS可以实现点对点通信和发布/订阅通信模式。
在JMS中,消息被发送到一个消息队列中,然后被接收者从队列中读取。
JMS实现了Java应用程序之间的解耦,使得应用程序可以独立地进行开发和部署。
3. Web服务Web服务是一种跨平台、跨语言的服务,可以通过HTTP协议进行调用。
Web服务通常使用SOAP协议进行通信,SOAP是一种基于XML的协议,用于在网络上交换结构化的和可扩展的信息。
通过Web服务,我们可以方便地实现不同系统之间的互操作性。
4. RESTful服务RESTful服务是一种基于HTTP协议的Web服务,它使用HTTP协议中的GET、POST、PUT、DELETE等方法来实现对资源的操作。
RESTful服务主要使用JSON或XML作为数据格式,具有轻量、灵活、易于扩展等特点。
二、实现跨系统调用方法的步骤实现跨系统调用方法的步骤如下:1. 定义接口在调用其他系统的功能时,需要定义一个接口,该接口定义了需要调用的方法和参数。
远程调用方法
远程调⽤⽅法调⽤⽅式介绍⽆论是微服务还是SOA,都⾯临着服务间的远程调⽤。
常见的远程调⽤⽅式有以下⼏种:RPC:Remote Produce Call远程过程调⽤,类似的还有RMI(Remote Method Invocation,远程⽅法调⽤)。
⾃定义数据格式,基于原⽣TCP通信,速度快,效率⾼。
早期的webservice,现在热门的dubbo,都是RPC的典型Http:http其实是⼀种⽹络传输协议,基于TCP,规定了数据传输的格式。
现在客户端浏览器与服务端通信基本都是采⽤Http协议。
也可以⽤来进⾏远程服务调⽤。
缺点是消息封装臃肿。
现在热门的Rest风格,就可以通过http协议来实现。
认识RPC概念解释RPC,即 Remote Procedure Call(远程过程调⽤),是⼀个计算机通信协议。
该协议允许运⾏于⼀台计算机的程序调⽤另⼀台计算机的⼦程序,⽽程序员⽆需额外地为这个交互作⽤编程。
说得通俗⼀点就是:A计算机提供⼀个服务,B计算机可以像调⽤本地服务那样调⽤A计算机的服务。
作⽤实现远程调⽤其他计算机的服务像调⽤本地服务⼀样调⽤远程服务问题总结要实现远程调⽤,肯定是通过⽹络传输数据。
A程序提供服务,B程序通过⽹络将请求参数传递给A,A程序接收参数调⽤本地服务执⾏后得到结果,再将结果返回给B程序。
采⽤何种⽹络通讯协议?现在⽐较流⾏的RPC框架,都会采⽤TCP作为底层传输协议数据传输的格式怎样?两个程序进⾏通讯,必须约定好数据传输格式。
就好⽐两个⼈聊天,要⽤同⼀种语⾔,否则⽆法沟通。
所以,必须定义好请求和响应的格式。
另外,数据在⽹路中传输需要进⾏序列化,所以还需要约定统⼀的序列化的⽅式。
如果仅仅是远程调⽤,还不算是RPC,因为RPC强调的是过程调⽤,调⽤的过程对⽤户⽽⾔是应该是透明的,⽤户不应该关⼼调⽤的细节,可以像调⽤本地服务⼀样调⽤远程服务。
所以RPC⼀定要对调⽤的过程进⾏封装认识http概念解释Http协议:超⽂本传输协议,是⼀种应⽤层协议。
【第一章】组态软件里面对远程桌面调用的方法
实现在组态软件里面调用其他计算机桌面的方法有2两种,一种是在RSView里面使用RUN命令调用mstsc.exe程序,另外一种是嵌入RDP(Remote Desktop Protocol远程桌面协议)的ActiveX控件。
另外需要说明一下,我们常说的RDP(远程桌面)其实是由Server (服务器)和Client(客户端)组成,被连接的称为Server,执行连接的称为Client。
RDP协议跟随Windows发布的版本提升也会坐相应的版本提升,当然也可以单独提升RDP的版本。
当前发布的Windows 系统中,凡是家庭普通版的操作系统如Win7家庭版、Win10家庭版等,都是不支持RDP Server功能的。
对于个人版的Windows操作系统,理论上只支持被一个RDP Client连接,Windows Server 系统可以支持多个Client连接,但是需要激活授权。
一、调用MSTSC.exeMSTSC.exe程序为Windows系统自带的RDP Client来接程序,你可以通过在开始,所有程序,附件,远程桌面这个路劲打开,或者通过cmd调用DOS运行框输入mstsc回车调用。
实际上,当你使用mstsc 建立远程桌面连接后,可以将这个连接记录另存为一个连接程序,RSViewSE软件也是这个文件来实现这个功能的。
首先建立连接,设置一些参数将该链接另存为一个文件双击这个Win7RDP文件就可以直接连接到远程桌面了,接下来看如何在RSViewSE里面调用它。
思路:计划在RSViewSE里面使用按钮触发脚本调用RDP连接,但是需要考虑避免多次调用造成的计算机奔溃,所以得想个办法来判断如果已经调用了RDP连接,后面再点击这个按钮就不起作用。
因为mstsc.exe运行起来后是应用程序,会在任务管理器的进程里面显示这个应用程序的连接状态,所以,我们需要判断是否有这个进程就可以知道当前有没有这个连接了。
如果有这个进程,就干掉它,然后重新执行连接,如果没有,就直接执行连接。
element select remote-method -回复
element select remote-method -回复[element select remote method]1. 什么是远程方法调用(Remote Method Invocation,RMI)?远程方法调用(RMI)是一种用于在分布式系统中调用远程对象方法的机制。
它允许在不同的主机上的对象之间进行通信和交互。
RMI是Java 平台的一项核心技术,它提供了一种简单的方法来创建分布式应用程序。
2. RMI的工作原理是什么?RMI的工作原理可以分为四个关键步骤:远程接口定义、远程对象实现、远程对象注册和远程对象调用。
- 首先,我们需要定义一个远程接口,其中声明了客户端可以调用的方法。
- 然后,在服务器端实现该远程接口的一个具体对象。
这个实现类将包含真正的业务逻辑和方法。
- 接下来,服务器将注册远程对象,使得客户端能够在服务器上访问它。
这可以通过使用RMI注册表或RMI命名服务来实现。
- 最后,客户端通过查找并获取远程对象的引用,并通过该引用来调用远程对象的方法。
3. RMI和其他远程调用技术的区别是什么?RMI与其他远程调用技术(如Web服务和CORBA)相比具有一些明显的区别:- RMI是一种Java特定的远程调用技术,它仅适用于Java平台。
而其他技术如Web服务和CORBA是跨平台的,可以在不同的编程语言和平台之间进行通信。
- RMI支持接口参数的传递,这意味着客户端和服务器可以共享相同的接口定义。
而其他技术更注重于传输数据。
- RMI使用Java对象序列化来传输数据,而其他技术如Web服务和CORBA通常使用XML或二进制数据格式。
- RMI提供了更高级别的抽象,使得远程调用变得更加简单和直观。
而其他技术可能需要更多的配置和编码。
4. 如何实现RMI?要实现RMI,需要执行以下步骤:- 首先,定义一个远程接口,并使用Java接口来声明可供远程调用的方法。
- 然后,在服务器端实现该接口的具体类。
一种基于服务描述的远程方法调用[发明专利]
专利名称:一种基于服务描述的远程方法调用专利类型:发明专利
发明人:汤湛成,邓从健,宁学军
申请号:CN201310317944.7
申请日:20130724
公开号:CN103391294A
公开日:
20131113
专利内容由知识产权出版社提供
摘要:本发明公开了一种基于服务描述的远程方法调用,利用XML对远程调用的方法进行描述,通过HTTP的调用实现对远程方法的调用。
远程方法的调用过程包括:服务的注册、服务的调用、服务执行、服务调用结果的返回四部分。
本发明主要解决了在一个JAVA虚拟机内或者多个虚拟机之间的远程方法调用的问题。
申请人:佳都新太科技股份有限公司
地址:510665 广东省广州市天河软件园建工路4号
国籍:CN
更多信息请下载全文后查看。
rmi远程调用工作原理
rmi远程调用工作原理RMI(远程方法调用)是一种用于实现远程通信的Java API。
它允许一个Java对象在不同的Java虚拟机(JVM)之间进行通信和交互。
RMI的工作原理是通过序列化和反序列化来实现的。
在RMI中,有三个主要的角色:远程对象、客户端和服务器。
远程对象是实现了远程接口的Java对象,它可以在不同的JVM之间进行传输和调用。
客户端是发起远程调用的一方,而服务器是提供远程服务的一方。
RMI的工作流程如下:1. 客户端通过查找RMI注册表来获取远程对象的引用。
RMI注册表是一个存储远程对象引用的服务,客户端可以通过查找注册表来获取远程对象的地址。
2. 客户端通过远程对象的引用调用远程方法。
在调用远程方法之前,客户端需要序列化方法的参数,并将序列化后的数据发送给服务器。
3. 服务器接收到客户端发送的请求后,通过反序列化恢复方法的参数,并执行方法体中的代码。
服务器可以访问本地资源,如数据库或文件系统,并根据客户端的请求进行相应的处理。
4. 服务器执行完方法后,将方法的返回值序列化并发送给客户端。
5. 客户端接收到服务器发送的返回值后,通过反序列化恢复返回值,并继续执行后续的代码。
需要注意的是,在RMI中,远程对象和其所在的JVM之间通过网络进行通信。
为了实现远程通信,RMI使用了Java的序列化机制。
序列化是将一个Java对象转换成字节流的过程,而反序列化则是将字节流转换回Java对象的过程。
RMI的序列化机制可以确保远程对象在不同的JVM之间进行传输和重建。
当客户端调用远程方法时,RMI会自动对方法的参数进行序列化,并将序列化后的数据发送给服务器。
服务器在接收到数据后,会进行反序列化,并将参数恢复成原始的Java对象。
同样地,服务器执行完方法后,将返回值序列化并发送给客户端,客户端在接收到返回值后进行反序列化。
RMI的远程调用过程中,序列化和反序列化是必不可少的环节。
通过序列化,RMI可以将Java对象在网络中进行传输,使得远程调用得以实现。
element select remote-method -回复
element select remote-method -回复远程方法调用(Remote Method Invocation,缩写为RMI)是一种用于在分布式系统中实现远程过程调用(Remote Procedure Call,缩写为RPC)的技术。
它允许一个程序在一个网络上的另一个程序上调用方法,并且使得远程方法调用就像本地方法调用一样简单。
在这篇文章中,我们将一步一步回答关于远程方法调用的问题,探讨它的原理、使用场景以及优点。
第一步:什么是远程方法调用(RMI)?远程方法调用是一种允许一个应用程序通过网络在另一个应用程序上调用方法的技术。
它通常用于实现分布式系统中的远程过程调用。
远程方法调用使得开发人员可以像调用本地方法一样调用远程方法,从而简化了分布式系统的开发和管理。
第二步:远程方法调用的原理是什么?远程方法调用的原理基于代理模式。
在RMI中,客户端应用程序通过代理对象代表服务端应用程序,向服务端发送请求。
代理对象在客户端和服务端之间扮演着桥梁的角色,负责处理客户端发出的请求并将其传递给服务端。
服务端接收到请求后执行相应的方法,并将结果返回给客户端。
第三步:远程方法调用的使用场景有哪些?远程方法调用适用于各种分布式系统的场景。
它可以用于构建复杂的分布式架构,例如客户/服务器模型、网格计算和云计算。
远程方法调用还可以用于构建跨平台的应用程序,允许不同的系统和编程语言之间进行通信和交互。
第四步:远程方法调用的优点是什么?远程方法调用具有以下几个优点:1. 分布式系统开发方便:远程方法调用可以将远程过程调用变得和本地方法调用一样简单,提供了一种透明的方式在分布式系统中进行方法调用。
2. 跨平台通信:远程方法调用可以在不同的系统和编程语言之间进行通信和交互,使得跨平台开发变得更加容易。
3. 代码重用和封装:通过使用远程方法调用,可以在分布式系统中实现代码的重用和封装,提高开发效率和代码可维护性。
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 服务器:
Android远程Service调用(RPC)实现步骤详解
开始介绍之前,先看一下本例的界面:Android远程Service调用简介:远程Service调用,是Android系统为了提供进程间通信而提供的轻量级实现方式,这种方式采用一种称为远程进程调用技术来实现,英文名全称是Remote Procedure Call,即RPC。
RPC简介:远程进程调用是指在一个进程里,调用另外一个进程里的服务。
Android通过接口定义语言来生成两个进程间的访问代码。
接口定义语言(Android Interface Definition Language,即AIDL)是Android系统的一种接口描述语言,Android编译器可以将AIDL文件编译成一段JA V A代码,生成相对的接口。
下面来详细介绍下如何通过RPC机制来达到远程进程调用的目的和步骤。
第一,我们要先弄清楚这是怎么样的一个流程。
用通俗点语言来说,打个例子:比如公司A提供A服务,并且这种服务是对外开放的,也就是其他公司或者个人都可以通过某种方式来使用这种服务,公司B想要使用A公司的A服务,就以通过公司A编制的一种形式来使用它。
用图来表示就是:公司B通过公司A的某种形式来使用公司A提供的服务A现在,我们可以说,进程B可以通过进程A提供的某种形式来使用进程A的服务A。
这个过程就是RPC。
了解基本概念之后,我们可以开始进行RPC的实现步骤。
下面我们分点来说明实现RPC 的步骤。
第一、创建AIDL文件。
这个文件和普通的JA V A文件差不多,只不过后缀名是.aidl。
这个文件相当于一个接口,里面要声明一些你想对外提供服务的方法,也就是你要对外暴露的方法。
注意,这个文件里,除了JA V A基本类型和String,List,Map和Charquene类型不需要引入相应的包外,其他的都要引入包。
例如我们创建一个IPerson.aidl文件,里面只声明了一个方法display():package com.test.service;interface IPersonaidl {String display();//该接口里面所有的方法都应该是你想对外暴露的}第二、创建完AIDL文件后,刷新项目,会发现在gen目录对应的目录下会生成一个IPerson.java接口文件,打开该文件,会发现你在aidl文件里面定义的display()方法,不过没有实现。
rmi原理在医院的应用
RMI原理在医院的应用介绍RMI(远程方法调用)是一种在分布式系统中实现远程通信的机制。
在医院领域,RMI可以发挥重要的作用,实现不同系统之间的数据共享和协作。
本文将介绍RMI的原理,并探讨其在医院中的应用。
RMI原理RMI是一种通过网络实现远程方法调用的技术。
其原理可以概括为以下几个步骤:1.服务端创建一个远程对象,并通过RMI注册表公开该对象的引用。
2.客户端通过RMI注册表获得远程对象的引用。
3.客户端通过远程对象的方法调用请求服务端执行操作。
4.服务端接收请求并执行相应操作。
5.服务端将结果返回给客户端。
RMI使用Java的序列化技术将对象及其状态在客户端和服务端之间进行传输,实现分布式通信。
RMI在医院的应用在医院环境中,不同的系统需要进行数据共享和协作,RMI可以提供一种可靠的机制,实现各个系统之间的通信和数据交换。
以下列举了RMI在医院中的应用场景:1. 医生和医院系统的通信医生在诊治患者时,需要与医院的系统进行交互,获取患者的病历信息、检查结果等。
通过RMI,医生可以方便地远程调用医院系统的接口,获取所需的信息。
同时,医院系统也可以通过RMI将最新的诊断结果和治疗方案传输给医生。
2. 分布式图像存储和检索医院中的医学影像技术越来越重要,例如CT扫描、MRI等。
分布式图像存储和检索系统可以通过RMI提供远程访问接口,医生可以通过RMI调用该接口来上传和查询影像数据。
这样,不同的医生和科室就可以方便地共享影像数据,并进行专业的诊断。
3. 医院系统之间的集成医院中常常存在多个不同的信息系统,例如电子病历系统、药品管理系统、实验室管理系统等。
这些系统需要进行数据交换和集成。
通过RMI,这些不同的系统可以建立连接,并以分布式的方式协同工作。
例如,电子病历系统可以通过RMI调用药品管理系统的接口,查询患者所需的药品信息。
4. 分布式数据分析和决策支持医院需要对大量的患者数据进行分析和处理,以辅助决策和提供个性化的医疗服务。
failed to invoke remote method
failed to invoke remote method
调用远程方法失败是一种普遍存在的问题,可能是由于网络原因、操作系统问题、编译程序问题等多种原因引起的。
一种典型的情况是,如果没有得到正确的返回结果,或者是程序运行时出现了错误,就可能发生调用远程方法失败。
首先,我们应该尝试排查原因,比如查看网络连接是否正常,看看是否有足够的内存资源可用,确保程序正常编译,正确地调用并传递参数等。
如果上述排查过程都没有搞清楚问题所在,可以尝试更换编译器或者重新安装操作系统等措施,也可以重置网络参数来改善网络性能。
此外,可以利用调试工具(如GDB)对具体的调用过程进行检查,尝试确定问题所在。
在发现问题之后,我们再根据现场条件来尝试修复或者重新安装,如果是一些比较复杂的问题,也可以考虑咨询相关的专家,加快问题的解决速度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Software Engineering Network Programming
10.2 创建远程方法调用
编写远程接口 以下例程是HelloService接口的源程序。在这个接口中声明 了echo()和getTime()两个方法,它们都声明抛出 RemoteException。 例程HelloService.java package hello; import java.util.Date; import java.rmi.*; public interface HelloService extends Remote{ public String echo(String msg) throws RemoteException; public Date getTime() throws RemoteException; }
Software Engineering Network Programming
10.1 RMI 概述
1、什么是RMI: RMI是一种计算机之间对象互相 调用对方函数,启动对方进程的一种机制,使用这 种机制,某一台计算机上的对象在调用另一台计算 机上的方法时,使用的程序语法规则和在本机上对 象间的方法调用的语法规则一样
Software Engineering Network Programming
10.1 RMI 概述
3、RMI组成 1.一个需要这个远程服务的客户端程序 2.远程服务的接口定义 3.远程服务接口的具体实现 4.桩(Stub)和框架(Skeleton)文件 5.一个运行远程服务的服务器 6.一个RMI命名服务,它允许客户端去发现这个远程服务 7.类文件的提供者(一个HTTP或者FTP服务器)
Software Engineering Network Programming
10.2 创建远程方法调用
1、创建远程接口:继承java.rmi.Remote接口。远程接口必 需满足下列要求: ① 远程接口必须直接或间接扩展Java.rmi.Remote接口,且 必须声明为public。 ② 接口中的所有方法声明抛出java.rmi.RemoteException。 ③ 远程接口中声明了可以被客户程序访问的远程方法。
Software Engineering Network Programming
10.1 RMI 概述
在服务器上部署了提供各种服务的远程对象,客户端请求访 问服务器上远程对象的方法。
Software Engineering Network Programming
10.1 RMI 概述
3、RMI体系结构:RMI框架为远程对象分别生成了客户端代 理和服务器端代理。位于客户端的代理类称为存根(Stub), 位于服务器端的代理类称为骨架(Skeleton)。
调用stub的方法时将执行下列操作: (1) 初始化与包含远程对象的远程虚拟机的连接; (2) 对远程虚拟机的参数进行编组(写入并传输); (3) 等待方法调用结果; (4) 解编(读取)返回值或返回的异常; (5) 将值返回给调用程序。为了向调用程序展示比较简单的 调用机制,stub将参数的序列化和网络级通信等细节隐藏了 起来。
ห้องสมุดไป่ตู้
Software Engineering Network Programming
10.1 RMI 概述
当客户机调用RMI方法时,相当于调用Stub,RMI Stub通过 编组(Marshaling)--把方法调用中的参数转换成可以在 网络上传输的数据格式,经远程引用层和传输层向下,以网 络分组的形式传递给服务器,然后再次经传输层,向上穿过 远程调用层和骨架(Skeleton),RMI Skeleton负责拆解网 络格式的数据,恢复方法调用中的参数到达服务器程序。 Skeleton利用方法调用,访问RMI实现类,RMI实现类进行相 应的处理,并将返回值返回Skeleton,Skeleton对返回值进 行编组,通过网络传输到客户机上。Stub再对收到的返回值 进行分解,最后把分解后的返回值送给客户机应用。
Software Engineering Network Programming
10.2 创建远程方法调用
大致说来,创建一个RMI应用包括以下步骤: (1)创建远程接口:继承java.rmi.Remote接口。 (2)创建远程类:实现远程接口。 (3) 使用RMIC程序生成远程实现所需的存根和框架 (4)创建服务器程序:负责在rmiregistry注册表中注册远 程对象。 (5)创建客户程序:负责定位远程对象,并且调用远程对 象的方法。
Software Engineering Network Programming
10.1 RMI 概述
2、RMI应用程序的基本模型 RMI采用客户/服务器通信方式。引用远程对象的JVM叫客 户机,包含远程对象的JVM叫服务器。 典型的服务器应用程序将创建多个远程对象,使这些远程 对象能够被引用,然后等待客户机调用这些远程对象的方法。 而典型的客户机程序则从服务器中得到一个或多个远程对象 的引用,然后调用远程对象的方法。RMI为服务器和客户机 进行通信和信息传递提供了一种机制 客户端无论何时要调用服务器端的对象,它如何告诉服务 器他想创建的对象吗?在服务器端,我们将一个字符串变量 与一个对象联系在一起,客户端通过将那个字符串传递给服 务器来告诉服务器它要创建的对象,这样服务器就可以准确 地知道客户端需要使用哪一个对象了。所有这些字符串和对 象都存储在的远程注册服务器中。
Software Engineering Network Programming
10.2 创建远程方法调用
在jdk1.5以下版本里运行rmi需要用rmic进行编译生成实现类 的stub和skel文件,然后将stub拷贝到客户端,然后才能访问。 可是,jdk1.5里却直接这样,完全不用生成文件就可以直接 访问了 从JDK5.0以后,这两个类就不需要rmic来产生了,而是有 JVM自动处理,实际上他们还是存在的。Stub存在于客户端, 作为客户端的代理,让我们总是认为客户端产生了stub,接 口没有作用。实际上stub类是通过Java动态类下载机制下载 的,它是由服务端产生,然后根据需要动态的加载到客户端, 如果下次再运行这个客户端该存根类存在于classpath中,它 就不需要再下载了,而是直接加载。
Software Engineering Network Programming
10.2 创建远程方法调用
2 、 创建远程类 远程类就是远程对象所属的类。RMI规范要求远程类必须实 现一个远程接口。此外,并且远程类的构造方法必须声明抛 出RemoteException。远程类必须继承 java.rmi.server.UnicastRemoteObject类, UnicastRemoteObject类让客户机与服务器对象实例建立一对 一的连接。 以下例程是HelloService接口的源程序。在这个接口中声明了 echo()和getTime()两个方法,它们都声明抛出 RemoteException。
Software Engineering Network Programming
第10章 远程方法调用
RMI(Remote Method Invocation,远程方法调用)是用 Java在JDK1.1中实现的,它大大增强了Java开发分布式应用 的能力。Java作为一种风靡一时的网络开发语言,其巨大的 威力就体现在它强大的开发分布式网络应用的能力上,而 RMI就是开发百分之百纯Java的网络分布式应用系统的核心 解决方案之一。Java RMI 则支持存储于不同地址空间的程序 级对象之间彼此进行通信,实现远程对象之间的无缝远程调 用。
Software Engineering Network Programming
10.2 创建远程方法调用
下图是本节要创建的RMI应用的类框图。其中HelloService是 一个远程接口,它继承了java.rmi.Remote接口, HelloServiceImpl类实现了该接口,并且继承了 java.rmi.server.UnicastRemoteObject类。 SimpleClient和SimpleServer类分别是客户程序和服务器程序。
Software Engineering Network Programming
10.1 RMI 概述
存根把以下请求信息发送给服务器: 被访问的远程对象的名字。 被调用的方法的描述。 编组后的参数的字节序列。
Software Engineering Network Programming
10.1 RMI 概述
第10章 远程方法调用
远程方法调用( RMI :Remote Method Invocation)是一 种机制,允许运行在一个Java虚拟机的对象调用运行在另一个 Java虚拟机上的对象的方法。如果想使机器中的对象能够被 远程调用,它就必须实现远程接口。 通俗地说,远程调用就象将一个class放在A机器上,然后 在B机器中调用这个class的方法。 RMI允许不同的Java虚拟机之间进行对象间的通信,从而 共享各个虚拟机上的资源和处理能力。 RMI的目的是使分布在不同的虚拟机中的对象工作起来像 是本地对象,以达到位置透明性,应用程序不用知道对象是 本地还是远程的,屏蔽应用程序对底层的复杂实现细节。 RMI是Java的一组拥护开发分布式应用程序的API。
Software Engineering Network Programming
10.1 RMI 概述
服务器端接收到客户端的请求信息,然后由相应的骨架对象 来处理这一请求信息,骨架对象执行以下操作: (1)反编组参数,即把参数的字节序列反编码为参数。 (2)定位要访问的远程对象。 (3)调用远程对象的相应方法。 (4)获取方法调用产生的返回值或者异常,然后对它进行编 组。 (5)把编组后的返回值或者异常发送给客户。
n
Software Engineering Network Programming