Hessian简单示例

来源:互联网 发布:深圳长租公寓 知乎 编辑:程序博客网 时间:2024/05/06 08:09

官网:Hessian

百科:Hessian

Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。

示例的项目结构:

项目结构

不需要按照这里的结构来写,创建一个Java Web工程即可,将hessian.jar放到lib下面即可。

创建一个对外接口

public interface Basic {    String hello(String name);    String say(String msg);    int sum(int a,int b);}

实现该接口并继承HessianServlet

public class BasicService extends HessianServlet implements Basic {    @Override    public String hello(String name) {        return "Hello " + name;    }    @Override    public int sum(int a, int b) {        return a + b;    }    @Override    public String say(String msg) {        return "Say:" + msg;    }}

配置web.xml

<servlet>  <servlet-name>hello</servlet-name>  <servlet-class>com.abel533.hessian.BasicService</servlet-class></servlet><servlet-mapping>  <servlet-name>hello</servlet-name>  <url-pattern>/hello</url-pattern></servlet-mapping>

启动服务器

客户端代码

public class Client {    interface Hello {        String hello(Object name);    }    interface SumSay {        String say(String msg);        int sum(int a, int b);        int hi(String hi);    }    public static void main(String[] args) throws MalformedURLException {        //TODO 根据实际地址修改        String url = "http://localhost:8090/hello";        HessianProxyFactory factory = new HessianProxyFactory();        Hello basic = (Hello) factory.create(Hello.class, url);        System.out.println(basic.hello(123));        SumSay sumSay = (SumSay) factory.create(SumSay.class, url);        System.out.println(sumSay.say("你好!"));        System.out.println("10+20=" + sumSay.sum(10, 20));    }}

在客户端中我创建了两个接口,接口名和最上面Basic中的部分接口是一样的。

其中hello方法的参数类型和接口提供的不一致。

经过简单的测试发现,只要方法名一致,并且参数个数一致,就可以成功调用。

并且从上面的HelloSumSay两个接口也可以看出来,不需要拥有原接口全部接口,可以只有部分接口(还可以多出来,但是不能调用)。

只有和Hessian接口一致的方法才能调用。

2 2
原创粉丝点击