RMI远程方法调用

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 }

定义实现类

 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 }

注册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 }

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     }

调用接口

1 @Autowired
2     private lateinit var rmiService: RmiService
3
4 fun test(){
5 rmiService.addSupplierSale(saleId)
6 }

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

时间: 2024-08-27 02:55:22

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

Java学习笔记之RMI远程方法调用

RMI 应用通常有两个分开的程序组成,一个服务端程序和一个客户端程序.一个典型的服务端程序创建一些远程对象,使得对这些远程对象的引用可以被访问,等待客户端调用这些远程对象提供的方法.一个典型的客户端程序获取远程引用,指向一个或者多个服务端上的远程对象,然后调用这些远程对象所提供的方法.通常我们称这为分布式对象应用程序. 3.1 RMI的工作方式 分布式对象应用程序需要做的事情: l 查找(定位)远程对象. 应用程序可以使用各种不同的机制取得远程对象的引用.比如应用程序可以通过 RMI 提供的简单

转载:RMI 远程方法调用

Java 分布式处理技术 1.1 RMI 的基本概念 1.1.1 什么是RMI RMI(Remote Method Invocation) 远程方法调用是一种计算机之间对象互相调用对方函数,启动对方进程的一种机制,使用这种机制,某一台计算机上的对象在调用另外一台计算机上的方法时,使用的程序语法规则和在本地机上对象间的方法调用的语法规则一样. 1.1.2 RMI 的用途 1. 分布式体系结构 我们为什么要使用分布式计算呢? ?         当我们想与多个用户或客户机共享一个中央资源(如一个数据

Java RMI远程方法调用

参考: 利用java-RMI进行大文件传输 RMI远程方法调用的简单方法和实例 RMI是类似RPC的一种远程方法调用协议,比RPC类型的WebService更简单,也可以跨进程访问 先来创建一个model或者javaBean,注意,该类必须实现序列化Serializable  public class Person implements Serializable {     private int id;     private String name;     private int age;

RMI - Java远程方法调用

一.入门篇 Java RMI指的是远程方法调用(Remote Method Invocation). 它是一种机制, 能够让不同操作系统之间程序实现方法调用. 比如: 一台电脑上的Java程序可以通过RMI调用另一台电脑上的方法(EJB底层就是使用RMI). 二.RMI和webservice RMI是在TCP协议上传递可序列化的Java对象, 只能用在Java虚拟机上, 客户端和服务端必须都是Java. webservice是在http协议上传递xml文件, 它与语言和平台无关, 可以在异构系统

spring整合RMI - Java远程方法调用

一. 开篇语 在上一篇RMI - Java远程方法调用博文中使用的是JDK原生类进行远程方法调用, 本篇文章使用spring提供的API对RMI进行整合, 希望能给您带来帮助. 二. 核心API 1. 客户端: 客户端的核心是RmiProxyFactoryBean, 它包含两个属性serviceUrl(远程调用地址), serviceInterface(远程调用接口) 2. 服务端: RmiServiceExporter把spring管理的Bean输出成一个RMI服务, 通过把Bean包装在一个

XML-RPC远程方法调用

一.简介 XML-RPC的全称是XML Remote Procedure Call,即XML远程方法调用. 它是一套允许运行在不同操作系统.不同环境的程序实现基于Internet过程调用的规范和一系列的实现. 这种远程过程调用使用http作为传输协议,XML作为传送信息的编码格式. Xml-Rpc的定义尽可能的保持了简单,但同时能够传送.处理.返回复杂的数据结构. xml rpc使用http协议做为传输协议的rpc机制,使用xml文本的方式传输命令和数据. 一个rpc系统,必然包括2个部分: 1

Spring框架实现——远程方法调用RMI代码演示

1.spring_RMI02_server服务端02 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="

普通方法实现——远程方法调用RMI代码演示

1.spring_RMI01_server服务端 1 package com.wisezone.service; 2 3 import java.rmi.Remote; 4 import java.rmi.RemoteException; 5 6 public interface IHelloService extends Remote { 7 8 public String sayHello(String msg) throws RemoteException; 9 } 1 package c

spring实现远程方法调用

spring in action一书的读书笔记 使用spring实现远程方法调用可以极大简化开发 将一个spring bean包装成为RMI service [java]  view plain copy <bean class="org.springframework.remoting.rmi.RmiServiceExporter" p:service-ref="spitterService" p:serviceName="SpitterServi