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递归构建菜单树
package testSimple; import java.util.ArrayList; import java.util.List; public class BuildTree { publ ...
- HOW TO FIX "EXPECTED BEGIN_ARRAY BUT WAS BEGIN_OBJECT" IN RETROFIT ?
https://www.freshbytelabs.com/2018/05/how-to-fix-expected-beginarray-but-was.html HOW TO FIX "E ...
- 【转】VMwareCLI命令参考
VMwareCLI命令参考 目录 基本命令范例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 ...
- Yii2 里使用Redis扩展
Redis是个很不错的Nosql数据库,比Memcached的好处是能持久化数据. Yii2里使用Redis ,首先要扩展Redis.可以在composer.json 里添加 redis " ...
- LINUX内核分析20133201
实验:通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 学号:20133201 姓名:李冬辉 注: 原创作品转载请注明出处 +<Linux内核分析>MOOC课程http://m ...
- int文档
文档 class int(object): """ int(x=0) -> integer int(x, base=10) -> integer ------ ...
- Websocket - Websocket原理(握手、解密、加密)、基于Python实现简单示例
一.Websocket原理(握手.解密.加密) WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实 ...
- Linux cd命令 pwd命令
1.cd命令 cd:及Change Directory改变目录的意思,用于更改到指定的目录 用法:cd [目录] 其中 "."代表当前目录,".."代表当前目录 ...
- (0.2.7)Mysql安装——多实例安装
(0.2.6)Mysql安装——多实例安装 待完善
- 文字识别的google的库 tesseract
https://github.com/tesseract-ocr/tesseract https://github.com/tesseract-ocr/tessdata 字体识 ...