说明
在公司熟悉代码的时候的,发现使用Hessian远程调用服务,以前没接触过,学习总结下
正文
Hessian是什么
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据
关于Hessian更多的基础知识,详见:Hessian知识学习总结(一)——基础知识
Hessian的简单使用示例
在写代码前,先要清楚使用Hessian的注意事项:
服务端:
- 包含Hessian的jar包
- 设计一个接口,用来给客户端调用
- 实现该接口的功能
- 配置web.xml, 配好相应的servlet
- 由于使用二进制RPC协议传输数据,对象必须进行序列化,实现Serializalbe接口
- 对于复杂对象可以使用Map的方法传递
客户端:
- 包含Hessian的jar包
- 具有和服务器端结构一样的接口,包括命名空间最好一样
- 利用HessianProxyFactory调用远程接口
jar包下载地址: http://hessian.caucho.com/
服务端代码
服务接口:
package com.basic.server;
public interface IHello {
String sayhello(String msg);
}
接口实现类:
package com.basic.server.impl;
import com.basic.server.IHello;
public class HelloImpl implements IHello {
@Override
public String sayhello(String msg) {
return "test of Hessian" + " via " + msg;
}
}
web.xml配置:
<servlet>
<servlet-name>HessianServlet</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>service-class</param-name>
<param-value>com.basic.server.impl.HelloImpl</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HessianServlet</servlet-name>
<url-pattern>/hessian</url-pattern>
</servlet-mapping>
服务端项目结构:
客户端代码:
package com.basic.server.test;
import java.net.MalformedURLException;
import com.basic.server.IHello;
import com.caucho.hessian.client.HessianProxyFactory;
public class MyClient {
public static void main(String[] args) {
try {
String url = "http://localhost:8081/HessainDemo/hessian";
HessianProxyFactory factory = new HessianProxyFactory();
factory.setOverloadEnabled(true);
IHello hello = (IHello) factory.create(IHello.class, url);
System.out.println(hello.sayhello("Harry Potter"));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
客户端项目结构: