RMI远程方法调用:适用于 客户端 调用 服务器 内的方法;(Kotlin 语言编写)

如果业务为二个服务器之间的通信,还是得用消息队列的形式,因为RMI 不适合 双向 调用

下面介绍RMI 的使用方法:

1,服务器端代码:

定义接口(此接口放入服务端和客户端公用的模块 或者打成jar给服务器/客户端使用)

 interface RmiService {

     /**
* 订单发货
* @param saleItemId BTB订单项 itemId
* @param shipmentName 物流公司名称
* @param shipmentNumber 物流单号
*
*/
fun shippedSale(saleItemId: Long, shipmentName: String, shipmentNumber: String): RestResponse<Any>
}

定义实现类

 @Service
class RmiServiceImpl : RmiService { @Autowired
private lateinit var supplierSaleService: SupplierSaleService /**
* 订单发货
* @param saleItemId BTB订单项 itemId
* @param shipmentName 物流公司名称
* @param shipmentNumber 物流单号
*
*/
override fun shippedSale(saleItemId: Long, shipmentName: String, shipmentNumber: String): RestResponse<Any> {
return supplierSaleService.shippedSale(saleItemId, shipmentName, shipmentNumber)
} }

注册RMI服务

 @Component
class RegistryExporter { @Autowired
private lateinit var rmiService: RmiService @Bean
fun rmiServiceExporter(): RmiServiceExporter {
val exporter = RmiServiceExporter()
exporter.service = rmiService
exporter.serviceInterface = RmiService::class.java
exporter.setServiceName("SERVER_NAME")
exporter.setRegistryPort(RmiServiceConstants.REGISTRY_PORT)
return exporter
} }

2.客户端代码:

通过RMI代理实例化接口(即 服务器定义的接口)

  @Bean("rmiService")
fun rmiService(): RmiProxyFactoryBean {
//创建rmi的代理
val rmiProxyFactoryBean = RmiProxyFactoryBean()
//访问rmi,ip,端口,和rmi名字
rmiProxyFactoryBean.serviceUrl = "rmi://${RmiServiceConstants.SERVER_HOST}:${RmiServiceConstants.REGISTRY_PORT}/" + RmiServiceConstants.SERVER_NAME
//设置代理类代理的接口
rmiProxyFactoryBean.serviceInterface = RmiService::class.java
return rmiProxyFactoryBean
}

调用接口

 @Autowired
private lateinit var rmiService: RmiService fun test(){
rmiService.addSupplierSale(saleId)
}

RMI远程方法调用的更多相关文章

  1. Java RMI远程方法调用

    RMI(远程接口调用) 1. RMI的原理: RMI系统结构,在客户端和服务器端都有几层结构. 方法调用从客户对象经占位程序(Stub).远程引用层(Remote Reference Layer)和传 ...

  2. 简单实现Java的RMI——远程方法调用

    一.RMI简介: 说到RMI就不得不说RPC了. RPC:(Remote Procedure Call),远程过程调用. RMI(Remote Method Invocation),远程方法调用. R ...

  3. Java APi 之 RMI远程方法调用

    一.什么是RPC RPC全称是remote procedure call,即远程过程调用.它是一种协议,用于从远程计算机上请求服务. 例如有两台服务器A和B,A上的应用想要调用B上应用的方法,但是他们 ...

  4. Java RMI 远程方法调用

    Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方 ...

  5. 【Java Web开发学习】远程方法调用RMI

    Java RMI 远程方法调用Remote Method Invocation 转载:http://www.cnblogs.com/yangchongxing/p/9078061.html 1.创建远 ...

  6. SpringBoot里使用RMI进行远程方法调用

    一.Java RMI定义 Java RMI:Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程 ...

  7. [转]Java远程方法调用

    Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口.它使客户机上运行的程序可以调用远 ...

  8. RMI远端方法调用

    一.RMI介绍 RMI(Remote Method Invocation),RMI是分布式对象软件包,它简化了在多台计算机上的JAVA应用之间的通信.必须在jdk1.1以上,RMI用到的类:java. ...

  9. XML-RPC远程方法调用

    一.简介 XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用. 它是一套允许运行在不同操作系统.不同环境的程序实现基于Internet过程调用的规范和一系列 ...

随机推荐

  1. phpstrom 常用默认快捷键

    ctrl+j 插入活动代码提示ctrl+alt+t 当前位置插入环绕代码alt+insert 生成代码菜单ctrl+shift+n 查找文件 ctrl+q 查看代码注释ctrl+d 复制当前行ctrl ...

  2. Python 之网络编程

    # 流程描述: # # 1. 服务器根据地址类型(ipv4, ipv6), socket类型, 协议创建socket; # # 2. 服务器为socket绑定ip地址和端口号; # # 3. 服务器s ...

  3. linux创建lvm分区

    创建LVM分区 shell> fdisk /dev/xvdb #### 选择磁盘 Command (m for help): m #### 帮助 Command action a toggle ...

  4. 转!!Linux 里的 2>&1 究竟是什么

    原博文地址:https://blog.csdn.net/shunzi1046/article/details/76110963 我们在Linux下经常会碰到nohup command>/dev/ ...

  5. chrome 因js死循环卡住

    chrome因js死循环卡住的解决方法: top命令查看chrome的pid kill -9 pid 杀死整个chrome进程(所有网页都关闭)

  6. MySQL单列索引和组合索引的区别介绍(转)

    原文:http://database.51cto.com/art/201011/233234.htm MySQL单列索引是我们使用MySQL数据库中经常会见到的,MySQL单列索引和组合索引的区别可能 ...

  7. 文字识别的google的库 tesseract

    https://github.com/tesseract-ocr/tesseract https://github.com/tesseract-ocr/tessdata             字体识 ...

  8. NGS中的一些软件功能介绍

    1.bowtie 短序列比对工具,blast也是短序列比对工具,速度快,结果易理解. 输入可以是fastq或者fasta文件. 生成比对结果文件sam格式的吧. 2.bwa 转自:https://ww ...

  9. map::erase陷阱

    map::erase函数在不同版本stl中的差异 1. C++98和C++11标准 http://www.cplusplus.com/reference/map/map/erase/ 2. pj st ...

  10. cdoj1588 潘爷泡妹

    地址:http://acm.uestc.edu.cn/#/problem/show/1588 题目:复制过来发现有问题,自己去cdoj看吧 思路: 1.先进行多次spfa跑出所有人之间的相互到达所需要 ...