码迷,mamicode.com
首页 > 其他好文 > 详细

RMI远程方法调用

时间:2019-03-22 19:07:16      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:ISE   test   实例   class   style   nts   实例化   编写   端口   

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

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

下面介绍RMI 的使用方法:

1,服务器端代码:

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

技术图片
 1 interface RmiService {
 2 
 3     /**
 4      * 订单发货
 5      * @param saleItemId  BTB订单项 itemId
 6      * @param shipmentName  物流公司名称
 7      * @param shipmentNumber  物流单号
 8      *
 9      */
10     fun shippedSale(saleItemId: Long, shipmentName: String, shipmentNumber: String): RestResponse<Any>
11 }
View Code

定义实现类

技术图片
 1 @Service
 2 class RmiServiceImpl : RmiService {
 3 
 4 
 5     @Autowired
 6     private lateinit var supplierSaleService: SupplierSaleService
 7 
 8 
 9     /**
10      * 订单发货
11      * @param saleItemId  BTB订单项 itemId
12      * @param shipmentName  物流公司名称
13      * @param shipmentNumber  物流单号
14      *
15      */
16     override fun shippedSale(saleItemId: Long, shipmentName: String, shipmentNumber: String): RestResponse<Any> {
17         return supplierSaleService.shippedSale(saleItemId, shipmentName, shipmentNumber)
18     }
19 
20 
21 }
View Code

注册RMI服务

技术图片
 1 @Component
 2 class RegistryExporter {
 3 
 4     @Autowired
 5     private lateinit var rmiService: RmiService
 6 
 7     @Bean
 8     fun rmiServiceExporter(): RmiServiceExporter {
 9         val exporter = RmiServiceExporter()
10         exporter.service = rmiService
11         exporter.serviceInterface = RmiService::class.java
12         exporter.setServiceName("SERVER_NAME")
13         exporter.setRegistryPort(RmiServiceConstants.REGISTRY_PORT)
14         return exporter
15     }
16 
17 }
View Code

2.客户端代码:

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

技术图片
 1  @Bean("rmiService")
 2     fun rmiService(): RmiProxyFactoryBean {
 3         //创建rmi的代理
 4         val rmiProxyFactoryBean = RmiProxyFactoryBean()
 5         //访问rmi,ip,端口,和rmi名字
 6         rmiProxyFactoryBean.serviceUrl = "rmi://${RmiServiceConstants.SERVER_HOST}:${RmiServiceConstants.REGISTRY_PORT}/" + RmiServiceConstants.SERVER_NAME
 7         //设置代理类代理的接口
 8         rmiProxyFactoryBean.serviceInterface = RmiService::class.java
 9         return rmiProxyFactoryBean
10     }
View Code

调用接口

技术图片
1 @Autowired
2     private lateinit var rmiService: RmiService
3 
4 fun test(){
5 rmiService.addSupplierSale(saleId)
6 }
View Code

 

RMI远程方法调用

标签:ISE   test   实例   class   style   nts   实例化   编写   端口   

原文地址:https://www.cnblogs.com/dwb91/p/10579884.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!