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

posted @ 2018-03-27 11:03  12344321hh  阅读(240)  评论(0编辑  收藏  举报