RMI远程方法调用
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远程方法调用的更多相关文章
- Java RMI远程方法调用
RMI(远程接口调用) 1. RMI的原理: RMI系统结构,在客户端和服务器端都有几层结构. 方法调用从客户对象经占位程序(Stub).远程引用层(Remote Reference Layer)和传 ...
- 简单实现Java的RMI——远程方法调用
一.RMI简介: 说到RMI就不得不说RPC了. RPC:(Remote Procedure Call),远程过程调用. RMI(Remote Method Invocation),远程方法调用. R ...
- Java APi 之 RMI远程方法调用
一.什么是RPC RPC全称是remote procedure call,即远程过程调用.它是一种协议,用于从远程计算机上请求服务. 例如有两台服务器A和B,A上的应用想要调用B上应用的方法,但是他们 ...
- Java RMI 远程方法调用
Java RMI 指的是远程方法调用 (Remote Method Invocation).它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法.可以用此方 ...
- 【Java Web开发学习】远程方法调用RMI
Java RMI 远程方法调用Remote Method Invocation 转载:http://www.cnblogs.com/yangchongxing/p/9078061.html 1.创建远 ...
- SpringBoot里使用RMI进行远程方法调用
一.Java RMI定义 Java RMI:Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程 ...
- [转]Java远程方法调用
Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口.它使客户机上运行的程序可以调用远 ...
- RMI远端方法调用
一.RMI介绍 RMI(Remote Method Invocation),RMI是分布式对象软件包,它简化了在多台计算机上的JAVA应用之间的通信.必须在jdk1.1以上,RMI用到的类:java. ...
- XML-RPC远程方法调用
一.简介 XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用. 它是一套允许运行在不同操作系统.不同环境的程序实现基于Internet过程调用的规范和一系列 ...
随机推荐
- Java中static关键字用法总结
1. 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · ...
- CH5105 Cookies【贪心】【线性dp】
5105 Cookies 0x50「动态规划」例题 描述 圣诞老人共有M个饼干,准备全部分给N个孩子.每个孩子有一个贪婪度,第 i 个孩子的贪婪度为 g[i].如果有 a[i] 个孩子拿到的饼干数比第 ...
- R语言中将数据框(data.frame)中字符型数据转化为数值型
as.data.frame(lapply(data,as.numeric))
- HDU_5538_House Building
House Building Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) ...
- Junit 3.8.1 源码分析(一)
写在前面:本文基于Junit3.8.1版本,因为这是我第一次进行源码学习,先从简单的源码开始学起 1. 示例代码 1.1 准备工作 下载Junit3.8.1的JAR包 需要下载junit-3.8.1- ...
- LeetCode_Compare Version Numbers
题目: Compare two version numbers version1 and version2. If version1 > version2 return 1, if versio ...
- SQL事务回滚 写法(转)
以下是SQL 回滚的语句:方案一:SET XACT_ABORT ON--如果产生错误自动回滚GOBEGIN TRANINSERT INTO A VALUES (4)INSE ...
- 014-HQL中级4-Hive中的三种不同的数据导出方式介绍
根据导出的地方不一样,将这些方式分为三种:(1).导出到本地文件系统:(2).导出到HDFS中:(3).导出到Hive的另一个表中.为了避免单纯的文字,我将一步一步地用命令进行说明. 一.导出到本地文 ...
- html5 live stream
一.传统的安防监控/流媒体音视频直播基本架构 A/V device 信号采集(yuv/rgb) ---> 转码(h264/265) ---> 网络推送(rtsp/rtmp/http/onv ...
- Linux 超级用户和普通用户切换命令
默认登录的是普通用户权限显示$符 tree@ubuntu:/usr$ 从普通用户切换超级用户权限: sudo su tree@ubuntu:/usr$ sudo su 输入密码 [sudo] pass ...