博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 实现RMI
阅读量:6036 次
发布时间:2019-06-20

本文共 1489 字,大约阅读时间需要 4 分钟。

什么是RMI :远程方法调用,通过对象序列化,代理模式,在本地调用远程的方法或者和函数的方式,在JAVA或Python 中都有其具体的解决方式。

先看图 :

   看看方法调用是如何发生的 :借鉴Head First 设计模式中对RMI的实现方式。

  

  
 
 
 
 
 
 
 
基本的介绍也就这些了。
先看看使用JAVA 来制作远程服务
Step一:  制作远程接口
 
JAVA
1 import java.rmi.* ;2 3 //扩展JAVA.RMI.REMOTE接口4 public interface MyRemote extends Remote {5     //远程调用一定会抛出异常,RemoteException6     //确定变量和返回值是属于原语(primitive)类型或者可序列化7     //String 是可序列化类型8     public String sayHello() throws RemoteException;9 }

 

Step二: 制作远程实现,也就是说远程服务的实现

Remote Service
//UnicastRemoteObject 帮助我们实现了某些功能public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote{    public String sayHello(){        return "Server says ,'Hey!'";    }    //必须声明的空的构造函数,意味这你的构造器正在调用不安全的代码    public MyRemoteImpl() throws RemoteException{}    public static void main(String[] args){        try{            MyRemote service = new MyRemoteImpl();            Naming.rebind("RemoteHello",service);        }catch(Exception ex){            ex.printStackTrace();        }    }}

Step三: 产生Stub 和 Skeleton

其中S tub 是对象是客户端必须找到的对象

Step四: Stub 在RMI服务器端进行注册 使用RMI Register 进行注册

Step五:启动 远程服务,也就是在一个线程中启动Remote Service。

 

这样服务器端的所有准备工作完成。

再来看看客户端的代码是如何实现。

Step一:客户端在Register中寻找stub代理的代码

 

Step二:Register返回该Stub的对象

 

Step三:客户端就像调用真正的Stub 对象一样调用该段代码

 

Client
client :import java.rmi.* public class MyRemoteClient(){    public void main(string[] args){        new MyRemoteClent.go();        }    public void go(){        MyRemote service=(MyRmote)Naming.lookup("rmi://127.0.0.1/RemoteHello");        service.sayHello();            }}

 

 

 

 

 

 

 
 
 
 

转载地址:http://pgohx.baihongyu.com/

你可能感兴趣的文章
[译] 听说你想学 React.js ?
查看>>
gulp压缩合并js与css
查看>>
块级、内联、内联块级
查看>>
Predicate
查看>>
[面试题记录01]实现一个function sum达到一下目的
查看>>
这个季节的忧伤,点到为止
查看>>
mysql通过配置文件进行优化
查看>>
省级网站群建设关注点
查看>>
工作第四天之采集资源
查看>>
innobackupex 在增量的基础上增量备份
查看>>
Windows Server 2012 R2 DirectAccess功能测试(2)App1服务器安装及配置
查看>>
基于清单的启动器的实现
查看>>
外网用户通过citrix打印慢的解决方法
查看>>
STL容器的使用
查看>>
关于std::map
查看>>
JXL导出Excel文件兼容性问题
查看>>
VBoot1.0发布,Vue & SpringBoot 综合开发入门
查看>>
centos7 安装wps 后 演示无法启动
查看>>
git简单命令
查看>>
LAMP编译部署
查看>>