转载请出自出处:http://eksliang.iteye.com/blog/2267682
一、概述
上两篇博客《RMI远程方式调用》、《Heasian与Spring集成》他们都有自己的缺陷,第一,RMI使用Java标准的对象序列化机制,但是很难穿透防火墙。另一个方面,Hessian和Burlap能很好的穿透防火墙,但是使用私有的对象序列化机制。
就这样Spring invoker应运而生了。HTTP invoker是一个新的远程调用模型,作为Spring框架的一部分,来执行基于HTTP的远程调用(让防火墙可以接受),并使用Java的序列化机制。
二、把Bean发布为HTTP服务
2.1、定义服务接口UserService
import java.util.List; import com.gosun.jws.daomain.Users; /** * 测试Spring中配置RMI服务的接口 * @author Lenovo * */ public interface UserService { /** * 测试返回list * @return */ public List<Users> geAlltUsers(); /** * 测试返回实体,以及传人普通参数 * @param id * @return */ public Users getUser(String id); /*** * 测试传入对象 * @param user */ public void save(Users user); /** * 测试传人集合 * @param users */ public void saves(List<Users> users); }
2.2、服务接口实现类
import java.util.List; import com.gosun.jws.daomain.Users; import com.gosun.jws.daomain.UsersFactory; public class UserServiceImpl implements UserService { @Override public List<Users> geAlltUsers() { return UsersFactory.getUsers(); } @Override public Users getUser(String id) { System.out.println(id); return UsersFactory.getUser(); } @Override public void save(Users user) { System.out.println(user.toJson()); } @Override public void saves(List<Users> users) { for (Users u : users) { System.out.println(u.toJson()); } } }
2.3、配置Spring的HttpInvokerServiceExporter和SimpleUrlHandlerMapping
<!-- 在Spring的httpInvoker服务 --> <bean id="httpInvokerUserService" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"> <!--需要发布的实现类 --> <property name="service" ref="userServiceHttpInvoker" /> <property name="serviceInterface" value="com.gosun.jws.httpinvoker.UserService" /> </bean> <!-- 将特定的请求映射到具体的hessianservice --> <bean id="urlMapping1" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/httpInvokerUserService.service">httpInvokerUserService</prop> </props> </property> </bean> <bean id="userServiceHttpInvoker" class="com.gosun.jws.httpinvoker.UserServiceImpl" />
2.4、配置DispatcherServlet控制器
因为是基于Http的,所以 HttpInvokerServiceExporter需要实现一个Spring MVC控制器;
在web.xml中配置DispatcherServlet的代码如下:
<servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:applicationContext-httpinvoker.xml </param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>*.service</url-pattern> </servlet-mapping>
这个时候启动服务器,就可以完成对 HttpInvoker服务的启动。
三、访问HttpInvoker服务
3.1、配置Spring的HttpInvokerProxyFactoryBean代码如下
在classpath路径下面新建applicationContext-httpInvoker.xml加入如下代码
<bean id="httpInvokerUserService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> <property name="serviceUrl" value="http://localhost:8080/jws/httpInvokerUserService.service"/> <property name="serviceInterface" value="com.gosun.jws.httpinvoker.UserService" /> </bean>
3.2、测试代码如下
import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.gosun.jws.daomain.Users; public class ClientDemo { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("client-application/applicationContext-httpInvoker.xml"); UserService us = (UserService) ac.getBean("httpInvokerUserService"); Users user = us.getUser("a001"); System.out.println(user.toJson()); System.out.println("----------------------------------------"); List<Users> users = us.geAlltUsers(); for (Users u : users) { System.out.println(u.toJson()); } System.out.println("----------------------------------------"); us.save(user); System.out.println("----------------------------------------"); us.saves(users); } }
相关推荐
**Spring HttpInvoker的封装** 在Java企业级应用开发中,Spring框架因其强大的功能和灵活性而被广泛应用。HttpInvoker是Spring框架的一部分,它提供了一种基于HTTP协议的远程调用机制,使得不同网络环境中的Java...
Spring HttpInvoker,是一套基于Maven+Spring+SpringMVC+MyBatis框架,还包含了Invoker的客户端及服务器端的demo实例
公司内部讲义,比较了SOA,RMI和Spring HttpInvoker。并介绍了Spring HttpInvoker的基本使用方法。
<bean id="serviceExporter" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"> ``` 这里,`ServiceImpl`是你实现`ServiceInterface`的具体类,`HttpInvokerServiceExporter`将...
org.springframework.remoting.httpinvoker最基本的实现例子,这是3个eclipse的JavaEE工程,全部导入即可,能运行。 初学可以轻松了解Spring HttpInvoker 的结构和使用。
在分布式系统中,远程服务调用是常见的需求,Spring框架提供了多种远程服务支持,其中包括HttpInvoker。HttpInvoker是Spring框架的一部分,它允许开发者使用HTTP协议进行远程方法调用,而不需要额外的类库。与...
Spring httpInvoker使用标准java序列化机制,通过Http暴露业务服务。如果你的参数和返回值是比较复杂的,通过httpInvoker有巨大的优势。 1. 远程访问流程 1) 服务端定义服务接口 2) 服务端实现服务接口 3) 暴露服务...
同时,使用`@HttpInvokerService`注解暴露该服务,指定远程访问的URL。 3. 配置服务消费方:在服务消费方,使用`@HttpInvokerProxyFactoryBean`来创建服务代理,指定服务的URL和接口类型。这样,消费方就可以像调用...
NULL 博文链接:https://lggege.iteye.com/blog/369151
Spring HTTP Invoker是spring框架中的一个远程调用模型,执行基于HTTP的远程调用,也就是说,可以通过防火墙,并使用java的序列化机制在网络间传递对象。客户端可以很轻松的像调用本地对象一样调用远程服务器上的...
Java Spring 2.5 Remote Invoke HTTP Invoker 是一个基于HTTP协议的远程调用框架,它允许Spring应用通过HTTP协议来调用远程服务。这个技术在分布式系统中非常有用,因为它可以轻松地跨越网络边界,实现服务间的通信...
3. **配置HTTP Invoker**:在服务端配置Spring,启用HTTP Invoker的支持,将接口绑定到特定的URL路径上,以便客户端可以访问。 4. **客户端构建请求**:在客户端,我们需要创建一个HTTP Invoker的代理对象,该对象...
在IT行业中,Thrift和Spring Http Invoker是两种常见的服务通信框架。Thrift是由Facebook开源的一种高性能、跨语言的服务框架,而Spring Http Invoker是Spring框架的一部分,用于实现基于HTTP的远程方法调用。这篇...
在分布式系统中,远程调用是一个常见需求,Spring为此提供了一种轻量级的解决方案——HttpInvoker。本文将详细讲解如何利用Spring的HttpInvoker进行远程方法调用。 首先,我们需要理解什么是Spring HttpInvoker。...
**Http Invoker:接口测试工具详解** Http Invoker是一款用于接口测试的工具,它允许开发者对Web服务进行调用和测试,验证API的功能和性能。虽然在某些用户看来,Http Invoker可能并不是最易用或者功能最全面的工具...
Spring HTTP Invoker是Spring框架提供的一个远程调用模型,它允许通过HTTP进行远程调用,这意味着可以在防火墙环境下实现服务间的通信。与传统的远程过程调用(RPC)不同,Spring HTTP Invoker简化了客户端和服务端...
Java Spring 1.2 远程调用HTTP Invoker是一个基于HTTP协议的远程服务调用框架,它是Spring框架的一部分,允许应用通过HTTP协议进行服务间的通信。这种通信方式相对于RMI(Remote Method Invocation)等其他远程调用...
`Http Invoker`是Spring框架提供的一种基于HTTP协议的RPC实现,主要用于Java应用程序之间进行服务调用。本文将深入探讨如何使用Http Invoker实现RCP客户端与后台的交互,以及相关知识点。 1. **Http Invoker的基本...
HttpInvoker主要面向Spring应用程序,易于集成,但相比Hessian,其数据传输效率较低,因为HTTP协议本身较重,且Java序列化也相对消耗资源。 XFire(后来被Apache CXF吸收)是一款基于XML的Web服务框架,它支持多种...
基于Spring的HttpInvoker实现改写服务器端调用: HttpInvoker.invoker 方法,设置InvokerProcess处理客户端调用: ProxyFactory.proxy 方法,生成接口的代理对象,直接调用方法客户端和服务器端的接口和实体类要...