`
zhuchengzzcc
  • 浏览: 442624 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java HttpInvoker小试(转)

    博客分类:
  • RPC
阅读更多

Httpinvoker是SpringFramework提供的远程通讯协议,只能用于JAVA程序间的通讯,且服务端和客户端必须使用SpringFramework。

 

package test;

import java.util.Map;

/**
 * @author zhuc
 * @version 2012-5-18 下午1:19:08
 */
public interface IService {
	/**
	 * @param msg
	 * @return
	 */
	public String getString(String msg);

	/**
	 * @param map
	 * @return
	 */
	public Map<String, Object> getMap(String map);
	
	/**
	 * @return
	 */
	public Car getCar();
}

 

package test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author zhuc
 * @version 2012-5-18 下午1:19:32
 */
public class ServiceImpl implements IService {

	@Override
	public String getString(String msg) {
		return "hello : " + msg;
	}

	@Override
	public Map<String, Object> getMap(String map) {
		Map<String, Object> testMap = new HashMap<String, Object>();
		testMap.put("m1", 1);
		testMap.put("m2", "2");
		List<String> list = new ArrayList<String>();
		list.add("213");
		list.add("456");
		testMap.put("m3", list);
		testMap.put(map, map);
		System.out.println("远程调用:" + map);
		return testMap;
	}

	/* (non-Javadoc)
	 * @see test.IService#getCar()
	 */
	@Override
	public Car getCar() {
		Car c = new Car();
		c.setName("zhuc-httpinvoker-car");
		c.setCapacity(100);
		return c;
	}

}

 

package test;

import java.io.Serializable;

/**
 * @author zhuc
 * @version 2012-5-17 下午10:29:18
 */
public class Car implements Serializable {

	/** 
     *  
     */
	private static final long serialVersionUID = -1115598660168001267L;

	private String name;

	private transient Integer capacity;

	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}

	/**
	 * @param name the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * @return the capacity
	 */
	public Integer getCapacity() {
		return capacity;
	}

	/**
	 * @param capacity the capacity to set
	 */
	public void setCapacity(Integer capacity) {
		this.capacity = capacity;
	}

}

 

 web.xml具体配置

 

	<!-- 配置DispatcherServlet -->
	<servlet>
		<servlet-name>remote</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- 配置该Servlet随应用启动时候启动 -->
		<load-on-startup>1</load-on-startup>
	</servlet>

	<!-- 配置DispatcherServlet映射的url -->
	<servlet-mapping>
		<servlet-name>remote</servlet-name>
		<url-pattern>/remote/*</url-pattern>
	</servlet-mapping>

 

remote-servlet.xml 如下:

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	<!-- 通过Spring HttpInvoker机制暴露远程访问服务 -->
	<bean id="httpInvokerService" class="test.ServiceImpl" />

	<bean name="/remoteService"
		class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
		<property name="service" ref="httpInvokerService" />
		<property name="serviceInterface" value="test.IService" />
	</bean>

	<!-- url映射 -->
	<bean id="urlMapping"
		class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
		<property name="mappings">
			<props>
				<prop key="remote.convert.service">/remoteService</prop>
			</props>
		</property>
	</bean>
	<!-- 此处将url映射为 remote.convert.service -->
</beans>

 

 

客户端

 

package test;

import java.util.Map;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author zhuc
 * @version 2012-5-18 下午1:22:39
 */
public class ClientTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
				"test/remote-client.xml");
		IService service = (IService) applicationContext
				.getBean("remoteService");
		String msg = service.getString("zhuc-httpinvoker");
		System.out.println(msg);

		Car c = service.getCar();
		System.out.println(c.getName());
		System.out.println(c.getCapacity());
		
		Map<String, Object> map = service.getMap("test");
		for (Map.Entry<String, Object> entry : map.entrySet()) {
			System.out.println(entry.getKey() + "," + entry.getValue());
		}
	}

}

 

remote-client.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	<!-- 通过Spring HttpInvoker机制代理远程访问服务 -->
	<bean id="remoteService"
		class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
		<property name="serviceUrl" value="${url}" />
		<property name="serviceInterface" value="test.IService" />
	</bean>
	
	<bean id="globalPropertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>test/client.properties</value>
			</list>
		</property>
	</bean>

</beans>

 

 

新建一个client.properties文件,方便配置

#url=http://localhost:8080/HttpInvoker/remote/remoteService
url=http://localhost:8080/HttpInvoker/remote/remote.convert.service

 

 

输出结果如下:

hello : zhuc-httpinvoker
zhuc-httpinvoker-car
null
test,test
m1,1
m2,2
m3,[213, 456]

 

 

分享到:
评论
2 楼 jerryweiaaa 2014-04-01  
重新配置一下jre,web server后,确实能用
1 楼 longhua828 2012-08-31  
可以用,谢啦~~~~

相关推荐

    http invoker 做post测试

    HTTP Invoker 是一个Java框架,主要用于在分布式系统中进行远程方法调用(RPC)。它通过HTTP协议提供服务,使得客户端可以像调用本地方法一样调用远程服务。在这个场景下,“http invoker 做post测试”指的是在完成...

    Hessian 、 HttpInvoker 、 XFire 、 Axis

    HttpInvoker是Spring框架的一部分,它基于HTTP协议,使用Java的序列化机制来传递对象。HttpInvoker主要面向Spring应用程序,易于集成,但相比Hessian,其数据传输效率较低,因为HTTP协议本身较重,且Java序列化也...

    使用httpInvoker提供远程服务

    与Hessian等轻量级通信协议不同,HttpInvoker依赖于Java的序列化机制来处理方法的参数和返回值。 **14.7.1 输出业务对象** 使用HttpInvoker服务出口商(HttpInvokerServiceExporter)可以将普通的JavaBean实例转换...

    HttpInvoker.zip http调试工具

    《HttpInvoker:深入理解HTTP调试工具的奥秘》 在Web开发中,HTTP协议作为互联网应用的基础,扮演着至关重要的角色。为了确保我们的应用程序能够正确地与服务器进行通信,理解和调试HTTP请求至关重要。HttpInvoker...

    springboot-httpinvoker-demo.zip

    《SpringBoot HTTP Invoker 深度解析与实践》 在现代Java开发中,Spring Boot以其简洁、快速的特性受到了广大开发者的喜爱。而在微服务架构中,服务间通信是必不可少的一部分,HTTP Invoker作为Spring框架的一个...

    Spring HttpInvoker的封装

    HttpInvoker是Spring框架的一部分,它提供了一种基于HTTP协议的远程调用机制,使得不同网络环境中的Java应用之间能够进行安全、高效的通信。本篇文章将深入探讨Spring HttpInvoker的原理以及如何对其进行封装,以便...

    Java Spring1.2 Remote Invoke HTTP Invoker

    Java Spring 1.2 远程调用HTTP Invoker是一个基于HTTP协议的远程服务调用框架,它是Spring框架的一部分,允许应用通过HTTP协议进行服务间的通信。这种通信方式相对于RMI(Remote Method Invocation)等其他远程调用...

    用Http Invoker实现RCP客户端与后台的交互

    `Http Invoker`是Spring框架提供的一种基于HTTP协议的RPC实现,主要用于Java应用程序之间进行服务调用。本文将深入探讨如何使用Http Invoker实现RCP客户端与后台的交互,以及相关知识点。 1. **Http Invoker的基本...

    Java Spring2.5 Remote Invoke HTTP Invoker

    Java Spring 2.5 Remote Invoke HTTP Invoker 是一个基于HTTP协议的远程调用框架,它允许Spring应用通过HTTP协议来调用远程服务。这个技术在分布式系统中非常有用,因为它可以轻松地跨越网络边界,实现服务间的通信...

    Http Invoker

    **Http Invoker:接口测试工具详解** Http Invoker是一款用于接口测试的工具,它允许开发者对Web服务进行调用和测试,验证API的功能和性能。虽然在某些用户看来,Http Invoker可能并不是最易用或者功能最全面的工具...

    Jmail+ HttpInvoker+定时任务+Aop+Rmi+

    本文将深入探讨标题和描述中提及的几个关键知识点:Jmail、HttpInvoker、AOP(面向切面编程)、RMI(远程方法调用)以及定时任务。这些技术在实际开发中都有着广泛的应用。 首先,Jmail是一个用于发送电子邮件的...

    Spring HttpInvoker介绍

    公司内部讲义,比较了SOA,RMI和Spring HttpInvoker。并介绍了Spring HttpInvoker的基本使用方法。

    Spring HttpInvoker

    Spring HttpInvoker,是一套基于Maven+Spring+SpringMVC+MyBatis框架,还包含了Invoker的客户端及服务器端的demo实例

    httpinvoker.zip

    HTTP Invoker 是一个用于网络请求测试的工具,尤其适合APP、小程序以及API开发人员进行功能验证和性能测试。它简化了HTTP请求的构建和发送过程,使得开发者可以更便捷地模拟客户端行为,对服务器端接口进行调试和...

    spring-httpinvoker-demo

    Spring HTTP Invoker是spring框架中的一个远程调用模型,执行基于HTTP的远程调用,也就是说,可以通过防火墙,并使用java的序列化机制在网络间传递对象。客户端可以很轻松的像调用本地对象一样调用远程服务器上的...

    Eclipse工程Http Invoker Service & Client

    Http Invoker是Spring框架的一个组件,允许在分布式环境中通过HTTP协议透明地调用Java对象的方法,提供了一种轻量级的RPC(Remote Procedure Call)实现。 **Http Invoker服务端(Service)** 在Http Invoker...

    spring httpInvoker示例

    HTTP Invoker是Spring框架提供的一种轻量级远程调用解决方案,它利用HTTP协议在客户端和服务端之间传输Java对象。这种方式相比传统的RMI或SOAP更简单、灵活,因为它不需要额外的序列化和协议层。我们将从服务端和...

    HttpInvoker Sample

    HttpInvoker的核心在于`HttpInvokerRequestExecutor`,它负责将Java对象转换为HTTP请求,并将HTTP响应转换回Java对象。在服务端,通常会有一个`HttpInvokerServiceExporter`用于暴露服务,它会监听HTTP请求,并将...

    httpinvoker的使用实例

    HTTPInvoker是Spring框架中的一种远程调用机制,它允许客户端通过HTTP协议来调用服务器端的方法,实现远程服务的透明化访问。这个技术基于HTTP,所以具有较好的穿透性,适用于内网或者对安全性要求不高的环境。在这...

Global site tag (gtag.js) - Google Analytics