首先服务器端定义服务接口和实现服务,然后服务器端利用RMI协议将服务发布到一个端口上。等待客户端调用。

//定义服务接口,服务接口必须继承java.rmi.Remote,服务方法必须抛出java.rmi.RemoteException.
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface IRemoteService extends Remote {public String sayHello(String name) throws RemoteException ;
}
//提供服务实现类,服务实现类继承了java.rmi.server.UnicastRemoteObject,而其构造方法抛出异常,所以服务实现类必须显示给出构造方法并抛出异常.
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class RemoteServiceImpl extends UnicastRemoteObject implements IRemoteService {private static final long serialVersionUID = -1817498005094186816L;protected RemoteServiceImpl() throws RemoteException {  }public String sayHello(String name) throws RemoteException {return "Hello " + name + "!";}
}
//发布服务。也就是将服务实现类注册到RMI服务注册表中。
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;public class RemotePublish {public static void main(String[] args) throws Exception {LocateRegistry.createRegistry(8888); // 创建RMI服务注册表IRemoteService rs = new RemoteServiceImpl();Naming.bind("rmi://localhost:8888/rservice", rs); // 将服务实现类的实例发布到指定端口并命名为rservice,等待远程调用}
}

客户端通过RMI协议对发布好的服务器端口进行调用。

import java.rmi.Naming;public class ClientTest {public static void main(String[] args) throws Exception {IRemoteService rs = (IRemoteService) Naming.lookup("rmi://localhost:8888/rservice"); // 从远程获取名称为rservice的服务实现类String say = rs.sayHello("world");System.out.println(say);}
}

转载于:https://www.cnblogs.com/xuejianbest/p/10285303.html

Java:RMI远程调用相关推荐

  1. webservice java接口远程调用

    webservice 例如:java接口远程调用 文章目录 webservice 一.使用步骤 1引入Maven依赖 2.读入数据 总结 一.使用步骤 1引入Maven依赖 <!-- axis ...

  2. java socket 远程调用_SpringBoot使用Netty实现远程调用的示例

    前言 众所周知我们在进行网络连接的时候,建立套接字连接是一个非常消耗性能的事情,特别是在分布式的情况下,用线程池去保持多个客户端连接,是一种非常消耗线程的行为.那么我们该通过什么技术去解决上述的问题呢 ...

  3. java socket 远程调用_使用Socket反射Java流操作进行方法的远程调用(模拟RPC远程调用)...

    写在前面 阅读本文首先得具备基本的Socket.反射.Java流操作的基本API使用知识:否则本文你可能看不懂... 服务端的端口监听 进行远程调用,那就必须得有客户端和服务端.服务端负责提供服务,客 ...

  4. 【Java】远程调用、线程池手写一个简单服务器

    " 关键字:远程调用.序列化.反序列化.反射.动态代理.客户端.服务端.线程池 > 思考题:带着这几个问题可以先思考,然后看完文章再去理解,也可以在评论区讨论喔~ 反射和动态代理关系和 ...

  5. java rpc远程调用_浅谈rpc(远程过程调用)

    信息来源:邪恶八进制信息安全团队 RPC协议2:这个协议是一个够年头的协议 本文介绍用于ONC RPC协议规范.此协议使用XDR语言进行描述,并文不打算描述具体的使用细节而只介绍RPC协议本身. ON ...

  6. java远程代码注入_Java RMI远程反序列化任意类及远程代码执行解析(CVE-2017-3241 )...

    原标题:Java RMI远程反序列化任意类及远程代码执行解析(CVE-2017-3241 ) 本打算慢慢写出来的,但前几天发现国外有研究员发了一篇关于这个CVE的文章,他和我找到的地方很相似.然而不知 ...

  7. 《Spring技术内幕》学习笔记19——Spring RMI实现远程调用

    1.Spring除了使用基于HTTP协议的远程调用方案,还为开发者提供了基于RMI机制的远程调用方法,RMI远程调用网络通信实现是基于TCP/IP协议完成的,而不是通过HTTP协议. 在Spring ...

  8. java rmi 原理和使用浅析

    目录 定义 RMI远程调用步骤 JAVA RMI简单示例 定义 RMI: 远程方法调用(Remote Method Invocation),它支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远 ...

  9. 一文告诉你 Java RMI 和 RPC 的区别!

    RPC 远程过程调用 RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用某种服务. 一次RPC调用的过程大概有10步: 1.执行客户 ...

最新文章

  1. CVPR2021 | 基于transformer的视频实例分割网络VisTR
  2. Ubuntu 压缩解压汇总(自己常用+持续更新)
  3. spark 写tidb_tidb使用坑记录
  4. mysql视图子查询_mysql创建视图不能包涵子查询的解决办法。View's SELECT contains a subquery in the FROM clause...
  5. router vue 动态改变url_vue动态路由
  6. centos安装python3.5和pip
  7. 不用点击_华为手机里隐藏着一个扫描仪,以后扫描文件再也不用去打印店了
  8. ibm服务器更换主板怎么恢复系统,记号一次更换IBM X3650M4主板后RAID无法启动的解决...
  9. 201521123050 《Java程序设计》第13周学习总结
  10. EasyUI的增删查改(后台ASP.NET)
  11. python爬取动态网页_Python实现爬取网页中动态加载的数据
  12. 高等数学-用等价无穷小求极限题集
  13. 2016 linux发行版排行_2018年10大最漂亮的 Linux 发行版
  14. 无线连接网络找不到计算机组,Win10电脑找不到自家Wifi无线网络解决方法 可能是无线信道问题...
  15. 腾讯云COS云存储入门(一)
  16. 嵌入式系统开发笔记7:CJ/T-188 冷热量表协议解析1
  17. QtXlsx详细配置
  18. Apache ECharts数据可视化(连接数据库)
  19. vue 使用百度 API 实现图像识别
  20. (-ent -ant -ment)recipe and recipient

热门文章

  1. 80行代码搞定某电影网站所有的下载资源
  2. 学习笔记 ACCESS 延迟注入
  3. [IoC容器Unity]第一回:Unity预览
  4. 关于网站及项目的一些想法
  5. Elasticsearch 安装和使用
  6. React.js 小书 Lesson14 - 实战分析:评论功能(一)
  7. 标题h和img优化的技巧
  8. python命令行添加Tab键自动补全
  9. Failure Groups in ASM
  10. 【董天一】IPFSFilecoin和复制证明