前言
在研究源码之前,首先要了解下hessian到底有啥用,磨刀不误砍柴工。
Hessian是什么?
Hessian是一个轻量级的RPC框架,它基于HTTP协议传输,使用Hessian二进制序列化,对于数据包比较大的情况比较友好。但是它的参数和返回值都需要实现Serializable接口。
为什么要使用Hessian?比起webservice,Hessian还是要快很多的,因为hessian传输的格式是二进制,而webservice的是xml。
准备
话不多说,这就马上准备环境:
- JAVA WEB项目(尽量不要用spring配置,不然不够原汁原味)
- Hessian JAR包,下载地址,下载后把jar包里的内容复制到WEB项目里面就好了。
- Tomcat8.0
目录结构类似这样:
实现服务端
实现服务端首先我们需要配置一个在web.xml中添加一个servlet,看代码!
<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>test.BaseImpl</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HessianServlet</servlet-name>
<url-pattern>/hessian</url-pattern>
</servlet-mapping>
接下来在test包下创建Base接口和Base接口的实现类BaseImpl
Base.java:
package test;
public interface Base {
String sayHello(String name);
}
BaseImpl.java:
package test;
public class BaseImpl implements Base {
@Override
public String sayHello(String name) {
return "This is Hello words " + name;
}
}
客户端
客户端实现也不是特别难,看代码:
package test;
import com.caucho.hessian.client.HessianProxyFactory;
public class BaseClient {
public static void main(String[] args) {
try {
String url = "http://localhost:8080/test/hessian";
// 创建Hessian代理工厂,工厂是为了创建Hessian客户端的存根
// 为屏蔽客户调用远程主机上的对象,必须提供某种方式来模拟本地对象,这种本地对象称为存根(stub),存根负责接收本地方法调用,并将它们委派给各自的具体实现对象
HessianProxyFactory factory = new HessianProxyFactory();
factory.setOverloadEnabled(true);
// 根据输入的URL创建创建代理类
Base basic = (Base) factory.create(Base.class, url);
// 执行对应方法
System.out.println(basic.sayHello("你好吗"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行测试
先运行服务端,如果输入url后出现下面页面,则表示正常
正常后运行客户端:
一切正常!
结尾
简单介绍了一下hessian,后面的章节我会对Hessian进行源码分析,喜欢的各位可以点个赞哦。