Spring HttpInvoker一种JAVA远程方法调用框架实现,使用的是HTTP协议,允许穿透防火墙,使用JAVA系列化方式,但仅限于Spring应用之间使用,即调用者与被调用者都必须是使用Spring框架的应用。基本原理如下:

在server端,springAOC管理着controller(bean),并暴露出远程调用的接口。在Client端,借助spring产生一个代理对象,通过代理对象实现与服务端的交互。

  • 服务器端配置

    1. 加入jar包

    2. 在.xml中配置spring远程调用的servlet:

  <servlet>
<servlet-name>service</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>service</servlet-name>
<url-pattern>*.service</url-pattern>
</servlet-mapping>

    3.在spring配置文件中配置并发布远程调用端口:

<!-- service导出器,将pojo转换成Spring所需的controller对象 -->
<bean name="ss.service" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
<property name="serviceInterface">
<value>com.spring.service.HelloService</value>
</property>
<property name="service" ref="HelloService"></property>
</bean>
  • 客户端配置

    1.加入jar包,将服务器端service接口(并不需要实现类)和所用bean代码导入过来;

    2. 在spring.xml中配置代理对象:

<!--  配置代理 -->
<bean class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceInterface">
<value>com.spring.service.HelloService</value>
</property>
<property name="serviceUrl" >
        <!-- tomcat访问服务器的地址 -->
<value>http://localhost:8989/springservice/ss.service</value>
</property>
</bean>

配置好以后测试调用即可,注意:此远程调用方法传输的是序列化的对象,若需要传输自定义对象时,对应的类需要序列化,即实现Serializable接口。

 

Spring HttpIvoker实现Java的远程调用的更多相关文章

  1. Java 常用远程调用协议比较

    一.综述本文比较了RMI,Hessian,Burlap,Httpinvoker,web service等5种通讯协议的在不同的数据结构和不同数据量时的传输性能.RMI是java语言本身提供的远程通讯协 ...

  2. java RMI 远程调用

    1.背景 在学习代理模式的过程中接触到了远程调用,jdk有自己的RMI实现,所以这边自己实现了RMI远程调用,并记录下心得. 感受最深的是RMI和现在的微服务有点相似,都是通过"注册中心&q ...

  3. Java实践-远程调用Shell脚本并获取输出信息

    1.添加依赖 <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-s ...

  4. Shell 脚本 —— java 代码远程调用shell脚本重启 tomcat

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.创建maven 工程 ​ maven 依赖: <dependency> <grou ...

  5. [转载] 基于Dubbo的Hessian协议实现远程调用

    转载自http://shiyanjun.cn/archives/349.html Dubbo基于Hessian实现了自己Hessian协议,可以直接通过配置的Dubbo内置的其他协议,在服务消费方进行 ...

  6. 基于Dubbo的Hessian协议实现远程调用

    Dubbo基于Hessian实现了自己Hessian协议,可以直接通过配置的Dubbo内置的其他协议,在服务消费方进行远程调用,也就是说,服务调用方需要使用Java语言来基于Dubbo调用提供方服务, ...

  7. 【Java EE 学习 78 中】【数据采集系统第十天】【Spring远程调用】

    一.远程调用概述 1.远程调用的定义 在一个程序中就像调用本地中的方法一样调用另外一个远程程序中的方法,但是整个过程对本地完全透明,这就是远程调用.spring已经能够非常成熟的完成该项功能了. 2. ...

  8. Spring远程调用技术<3>-Spring的HTTP Invoker

    前面提到RMI使用java标准的对象序列化机制,但是很难穿透防火墙.  另一方面,Hessian和Burlap能很好地穿透防火墙,但是使用私有的对象序列化机制. Spring提供的http invke ...

  9. Spring远程调用技术<2>-Hessian和Burlap

    上篇谈到RMI技术,加上Spring的封装,用起来很方便,但也有一些限制 这里的Hessian和Burlap解决了上篇提到的限制,因为他们是基于http的轻量级远程服务. Hessian,和RMI一样 ...

随机推荐

  1. solr 查询参数说明

    solr 查询参数说明

  2. [转载]最完整PHP.INI中文版

    [转载]最完整PHP.INI中文版 http://www.21andy.com/blog/20090718/1344.html 最完整PHP.INI中文版 适用于 php-5.2 的 php.ini ...

  3. Linux命令-文件搜索命令:locate

    实际上是在分区表上搜索文件,比find命令速度更快 locate inittab 查找名称包含inittab的所有信息(快速搜索,实际上它是搜索linux资料库,区别于find在某一个磁盘分区或者某一 ...

  4. FFmpeg 向视频中添加文字

    原文地址:http://www.cnblogs.com/wanggang123/p/6707985.html FFmpeg支持添加文字功能,具体如何将文字叠加到视频中的每一张图片,FFmpeg调用了文 ...

  5. 【Arduino】超声波模块(HC-SR04)

    还好,这个模块有现成的库能够用: https://github.com/bosgood/arduino-playground/tree/master/lib/HCSR04Ultrasonic 下面仅仅 ...

  6. Locust分布式负载测试工具入门

    忽略元数据末尾 回到原数据开始处 Locust简介 Locust是一个简单易用的分布式负载测试工具,主要用来对网站进行负载压力测试. 以下是github上的仓库地址 https://github.co ...

  7. unity, stateMachine, change state name

    如图,假设wingsLayer下有个state,叫“New State“,现在想给它改名,则一定要保证当前wingsLayer为选中状态,然后才能在Inspector中可以为其改名.否则若当前选中的不 ...

  8. 安卓开发学习2-官方例子Accelerometer

    1.使用WakeLock防止屏幕被锁住,如果用户自己锁住屏幕,下次再开的时候还会重置一下,防止被锁. 2.SimulationView接收传感器事件,并且绘制.它实现SensorEventListen ...

  9. angular学习疑问总结

    服务里返回的数据是不是只能传给控制器,而不能传给指令呢?如果是的话那么指令只能通过配置scope属性来访问控制器里的数据

  10. webapi应用架构详解

    webapi适用场景 常见的应用包括以下四类,PC客户端程序,APP程序,网站程序,H5程序.这些应用需要的数据,服务可由同一个接口服务程序提供,这样,大大提高了产品多平台设计开发的效率,避免了重复的 ...