• 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

  • 相关阅读:
    【题解】1621. 未命名
    【模板】关于vector的lower_bound和upper_bound以及vector基本用法 STL
    【题解】数颜色 STL vector数组
    【题解】斐波拉契 luogu3938
    【题解】天天酷跑
    【题解】Grape luogu1156改 dp
    【题解】逐个击破 luogu2700
    【题解】ball 数论
    【题解】逐个击破 luogu2700
    【题解】平方根
  • 原文地址:https://www.cnblogs.com/12344321hh/p/8656356.html
Copyright © 2020-2023  润新知