Hessian
Hessian是一个轻量级的RPC框架
( RPC:是一种远程调用过程,两台服务器A和B,一个应用服务部署在A上,想要调用部署在B上的方法,由于不在一个内存空间,不能直接调用。所以需要网络来传递数据和语义。)
它基于HTTP协议传输,使用Hessian二进制序列化,对于数据包比较大的情况比较友好。但是它的参数和返回值都需要实现Serializable接口
1、创建接口和实现类
public interface Basic {
String sayHello(String name);
}
public class BasicImpl implements Basic{
public String sayHello(String name)
return "This is Hello words from HESSIAN Server. " + name;
}
}
2、配置HessianServlet, 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>example.impl.BasicImpl</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HessianServlet</servlet-name>
<url-pattern>/hessian</url-pattern>
</servlet-mapping>
3、编写客户端代码
public class BasicClient {
public static void main(String[] args) {
try {
String url = "http://localhost:8080/hessian";
HessianProxyFactory factory = new HessianProxyFactory();
factory.setOverloadEnabled(true);
Basic basic = (Basic) factory.create(Basic.class, url);
System.out.println(basic.sayHello("SW"));
}catch (Exception e){
e.printStackTrace();
}
}
创建HessianProxyFacotry对象,构造方法中创建了一个HessianProxyResolver对象,这个对象的lookup方法将用来查找远程服务。此外HessianProxyFacotry还有包括权限验证方面的支持。创建了factory之后,接下来就是通过Class对象和远程服务的URL创建代理对象了。HessianProxyFactory使用HessianProxy对象作为代理的Handler,也就是说,我们对代理对象的所有操作,都会由这个handler来处理。handler的invoke方法,在进行一些方法名和参数的确认之后,创建HttpURLConnection对象,调用sendRequest方法,将方法名和参数用HessianOutput对象(设置序列化的方式)的call方法,写入到服务端。
4 启动Tomcat,运行Client。
输出如下:
This is Hello words from HESSIAN Server. SW