一、前言

Spring框架提供了通过HTTP协议实现远程调用的方式,具体是调用方使用HttpInvokerProxyFactoryBean生成一个代理对象,通过代理对象远程通过http服务调用服务提供方法的服务并,服务提供方通过HttpInvokerServiceExporter在服务端暴漏远程调用接口。

二、远程服务暴露

2.1 简单使用

第一步需要定义需要暴露的服务接口和实现
public interface UserServiceBo {
String sayHello(String name);
String sayHello2(String name);
String testPojo(Person person);
}
public class UserServiceImpl implements UserServiceBo{

@Override
public String sayHello(String name) {return name;
}@Override
public String sayHello2(String name) {return name;
}@Override
public String testPojo(Person person) {return JSON.toJSONString(person);
}  

}
第二步创建服务导出HttpInvokerServiceExporter的实例
<bean id="userService" class="com.test.UserServiceImpl" />
<bean name="useServiceExporter" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
<property name="service" ref="userService" />
<property name="serviceInterface" value="com.test.UserServiceBo" />
</bean>
第三步 暴露远程服务的URL
<bean id="simpleUrlRequestHandler"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="alwaysUseFullPath" value="true" />
<property name="urlMap">
<map>
<entry key="/remote/test/userService" value-ref="useServiceExporter" />
</map>
</property>
</bean>
注意这个bean要配置到dispatcher类的配置文件里面。

2.2 原理

image.png

三、远程服务调用

3.1 简单使用

HttpInvokerProxyFactoryBean factoryBean = new HttpInvokerProxyFactoryBean();
factoryBean.setServiceUrl("http://127.0.0.1:7001/test/userService.do");
factoryBean.setServiceInterface(UserServiceBo.class);
factoryBean.afterPropertiesSet();
UserServiceBo userService = (UserServiceBo) factoryBean.getObject();

    System.out.println(userService.sayHello("jiaduo"));

3.2 原理

image.png

四、总结

Spring框架提供了通过HTTP协议实现远程调用的方式,我们可以通过重写invoker自定义http请求header和body传递一些信息到服务暴露端,比如函数签名指,序列化协议等。
通过重写exporter可以进行鉴权操作,比如进行函数签名校验,然后可以定制反序列化方式。

转载于:https://blog.51cto.com/13634103/2093416

使用Spring框架实现远程服务暴露与调用相关推荐

  1. Spring框架IoC和传统bean调用的区别

    传统方式:通过接口访问对象必须经过实例化,这样就必然增加了代码之间的耦合度,而其调用时必须了解接口实现类中定义的内容,同时不同意对生成的对象进行管理. 容器管理方式:当程序中用到该对象时,依赖容器进行 ...

  2. spring框架学习 - Data Access之 事务管理 - 声明式事务管理

    接上一篇博客:https://blog.csdn.net/qq_43605444/article/details/122085016?spm=1001.2014.3001.5502 4.声明式事务管理 ...

  3. 在Spring框架中使用SQL存储过程

    Spring框架也支持对SQL存储过程的调用,SQL存储过程是一组预先定义好的SQL语句,并存储到数据库管理系统中,外部程序可以直接调用执行.本课主要讨论在Spring框架中应用程序如何调用MySQL ...

  4. Spring框架基础学习小结。概念,文件配置

    spring框架 百度概念一大堆,我之阐述自己的理解. 概念:分层的轻量级的开源框架.两大内核为IOC(反转控制:将创建对象交给spring框架处理)和AOP(面向切面编程:对动态代理的再次增强) 分 ...

  5. 系统开发系列 之MyEclipse创建WebService详细教程和调用教程(spring框架+maven+CXF框架)

    1 回顾 [系统开发系列 之MyEclipse创建WebService详细教程和调用教程]介绍了使用JWS实现WebService接口的发布和调用,主要涉及的点有: (1)MyEclipse点击Fil ...

  6. Redis:Spring框架下Redis的配置和调用,xml文件中redis的配置,redisTemplate的使用和jedis的使用

    老规矩了,再次重复一遍,配置XML文件为Spring框架所属,所使用的框架是Spring,非SpringBoot!!! Spring框架整合Redis并且使用 1.配置文件 <bean clas ...

  7. 关于Spring框架(官方文档)

    反应性堆栈上的Web Version 5.1.0.RELEASE 目录 1. Spring WebFlux 1.9.反应铁心 1.10.使用DispatcherHandler 1.11.带注释控制器 ...

  8. 使用Spring框架的好处

    转自:https://www.cnblogs.com/hoobey/p/6032506.html 在SSH框假中spring充当了管理容器的角色.我们都知道Hibernate用来做持久层,因为它将JD ...

  9. Spring 系列: Spring 框架简介

    Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架. 在这篇由三部 ...

最新文章

  1. 好久没有看到这么有建设性德文章,由衷地赞叹《知其所以然地学习(以算法学习为例)》-By 刘未鹏(pongba)
  2. 关于VMware Linux 虚拟机忘记root 密码找回
  3. Oracle 11g新特性之--只读表(read only table)
  4. java以太网通讯西门子plc300_西门子300以太网通讯-工业支持中心-西门子中国
  5. python利用unittest进行测试用例执行的几种方式
  6. asp.net学习资源列表
  7. UOJ #131 BZOJ 4199 luogu P2178【NOI2015】品酒大会 (后缀自动机、树形DP)
  8. [算法天天练] 归并排序
  9. ceph客户端使用_ceph存储之ceph客户端
  10. jar k8s 自己的 部署_微服务架构 - 离线部署k8s平台并部署测试实例
  11. 目标检测——数据清洗的学习笔记
  12. ES6快速入门——类与对象
  13. python中的列表推导与生成器
  14. 一个api请求的流程
  15. 怎么查期刊是核心、是EI,还是SCI
  16. C语言利用switch的简单计算器
  17. 19张网络工程师必看的思维导图
  18. 【AiLearning】test2:搭建Shallow Netural Network
  19. ueditor插入图片调节框显示bug
  20. android记账app开发全过程,android开发实战-记账本APP(一)

热门文章

  1. 百度投资创维10亿,联手构建智能家居AI生态
  2. 一款 PO VO DTO 转换神器
  3. 这可能是史上功能最全的Java权限认证框架!
  4. 推荐 33 个 IDEA 最牛配置,写代码太爽了!
  5. 用Python偷偷告诉你十一假期8亿人都去哪儿浪?
  6. 周志华教授:关于深度学习的一点思考!
  7. 一图胜千言!数据可视化多维讲解
  8. ECUG 全球技术大会重回上海!
  9. 和大学老师结婚到底有多幸福?我已经开始酸了...
  10. 教育部:不得将研究生当作廉价劳动力!也不得故意拖延毕业时间!