「这是我参与11月更文挑战的第31天,活动详情查看:2021最后一次更文挑战」。
前言
Spring 作为一个基础框架,对 remoting(远程调用)有多种支持。Spring remoting support 简化了远程服务的开发。
目前,Spring 支持以下远程技术:Remote Method Invocation (RMI)、HTTP Invoker、Hessian、Burlap、JAX-RPC、JAX-WS 和 JMS。
Spring支持的远程技术
远程方法调用 (RMI)
Spring 通过 RmiProxyFactoryBean
和 RmiServiceExporter
支持 RMI。 RmiServiceExporter
将任何 Spring 管理的 bean 作为 RMI 服务导出并注册。 RmiProxyFactoryBean
是一个为 RMI 服务创建代理的工厂 bean。该代理对象代表客户端与远程 RMI 服务对话。
Spring的HTTP invoker
Spring HTTP invoker
使用标准的 Java 序列化机制通过 HTTP 暴露服务。 Spring 通过 HttpInvokerProxyFactoryBean
和 HttpInvokerServiceExporter
支持 HTTP 调用者基础设施。 HttpInvokerServiceExporter
将指定的服务 bean 导出为 HTTP 调用程序服务端点,可通过 HTTP 调用程序代理访问。 HttpInvokerProxyFactoryBean
是 HTTP 调用代理的工厂 bean。
Hessian
Hessian 提供了一种基于 HTTP 的二进制远程处理协议。 Spring 通过 HessianProxyFactoryBean
和 HessianServiceExporte
r 支持 Hessian。
Burlap
Burlap 是 Caucho 基于 XML 的 Hessian 替代品。 Spring 提供了 BurlapProxyFactoryBean
和 BurlapServiceExporter
等支持类。
JAX-RPC
Spring 通过 JAX-RPC(J2EE 1.4 的 Web 服务 API)为 Web 服务提供远程支持。
JAX-WS
Spring 通过 JAX-WS(Java EE 5 和 Java 6 中引入的 JAX-RPC 的继任者)为 Web 服务提供远程支持。
JMS
Spring 中的 JMS 远程处理支持由 JmsInvokerServiceExporter
和 JmsInvokerProxyFactoryBean
类提供。
Spring开发RMI服务
1、创建Maven项目
2、Pom文件添加依赖
1 | xml复制代码<dependencies> |
3、添加实体类
1 | java复制代码@Data |
4、添加存放用户信息的本地缓存接口
1 | java复制代码public interface ICacheService { |
5、存放用户信息的本地缓存接口实现类
1 | java复制代码public class CacheServiceImpl implements ICacheService { |
6、添加用户操作接口
1 | java复制代码public interface IRMIUserService { |
7、用户操作接口实现类
1 | java复制代码@Slf4j |
8、RMI服务端
1 | Java复制代码public class RMIServer { |
9、RMI服务端XML配置
1 | xml复制代码<beans xmlns="http://www.springframework.org/schema/beans" |
10、RMI客户端
1 | java复制代码@Slf4j |
11、RMI客户端XML配置
1 | xml复制代码<beans xmlns="http://www.springframework.org/schema/beans" |
12、启动RMI服务端和客户端
启动RMI服务端
启动RMI客户端
13、查看RMI服务端接口被调用的日志
总结
通过调用日志可以看到,服务端通过 RMI registry
暴露了一个服务地址,端口为1099。
客户端通过 rmi
协议,调用 rmi://127.0.0.1:1099/rmiUserService 地址,远程调用服务端接口。
本文转载自: 掘金