A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

一、什么是Hessian
Hessian 是一个基于 binary-RPC 实现的远程通讯library。使用二进制传输数据。
Hessian通常通过Web应用来提供服务,通过接口暴露。
ServletSpringDispatcherServlet都可以把请求转发给Hessian服务。
由以下两种方式提供,分别为:
com.caucho.hessian.server.HessianServlet
org.springframework.web.servlet.DispatcherServlet
二、入门案例
Hessian的主要功能是完成不同系统之间的数据交互,要完成以上功能就要设计到提供数据的一方和接收数据的一方,那我们将提供数据的一方称为服务端,获取数据的一方称为客户端。具体服务端和客户端的具体编写如下:

服务端
第一步:创建一个web项目,并导入hessianjar包: hessian-4.0.33.jar
第二步:创建一个接口
[Java] 纯文本查看 复制代码
public interface HelloService {
		public String sayHello(String name);
		public List<User> findAllUser();
	}
第三步:提供上面接口的实现类
[Java] 纯文本查看 复制代码
public class HelloServiceImpl implements HelloService{
		public String sayHello(String name) {
			System.out.println("sayHello方法被调用了");
			return "hello " + name;
		}
		public List<User> findAllUser() {
			List<User> list = new ArrayList<User>();
			list.add(new User(1, "小王"));
			list.add(new User(2,"小白"));
			return list;
		}
	}
第四步:在web.xml中配置服务
[XML] 纯文本查看 复制代码
<servlet>
		<servlet-name>hessian</servlet-name>
		<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
		<init-param>
			<param-name>home-class</param-name>
			<param-value>cn.itcast.service.HelloServiceImpl</param-value>
		</init-param>
		<init-param>
			<param-name>home-api</param-name>
			<param-value>cn.itcast.service.HelloService</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>hessian</servlet-name>
		<url-pattern>/hessian</url-pattern>
	</servlet-mapping>
第五步: 启动服务器,进行访问  http://ip:port/项目名/hessian
客户端
第一步:创建一个客户端项目,并导入hessianjar
第二步:创建一个接口(和服务端接口对应)
[Java] 纯文本查看 复制代码
public interface HelloService {
		public String sayHello(String name);
		public Object findAllUser();
	}
第三步:使用hessian提供的方式创建代理对象调用服务
[Java] 纯文本查看 复制代码
HessianProxyFactory factory = new HessianProxyFactory();
	String url = “http://ip:port/项目名/hessian”;
	HelloService proxy = (HelloService) factory.create(HelloService.class, url);
	String ret = proxy.sayHello("test");
	System.out.println(ret);
	Object users = proxy.findAllUser();
	System.out.println(users);






0 个回复

您需要登录后才可以回帖 登录 | 加入黑马