小试Hessian实现webservice

2012-11-12
    Hessian是一个轻量级的remoting on http工具,采用的是Binary RPC协议,所以它很适合于发送二进制数据,同时又具有防火墙穿透能力。Hessian一般是通过Web应用来提供服务,因此非常类似于平时我们用的WebService。只是它不使用SOAP协议,但相比webservice而言更简单、快捷。
    Hessian官网:http://hessian.caucho.com/
    Hessian可通过Servlet提供远程服务,需要将匹配某个模式的请求映射到Hessian服务。也可Spring框架整合,通过它的DispatcherServlet可以完成该功能,DispatcherServlet可将匹配模式的请求转发到Hessian服务。Hessian的server端提供一个servlet基类, 用来处理发送的请求,而Hessian的这个远程过程调用,完全使用动态代理来实现的,,建议采用面向接口编程,Hessian服务通过接口暴露。
    Hessian处理过程示意图:
    客户端——>序列化写到输出流——>远程方法(服务器端)——>序列化写到输出流 ——>客户端读取输入流——>输出结果
    下面详细介绍最常用的两种方式实现Hessian提供webservice:
    纯Hessian实现
    配合Spring框架实现
    在开始之前当然需要到官网上下载相关的lib包,放入项目的/WEB-INF/lib/下
    【一】、纯Hessian实现步骤:
    1.基本代码
    首先编写一个服务的接口类:HelloHessian.java
    Java代码
    package michael.hessian;
    import java.util.List;
    import java.util.Map;
    /**
    * @author michael
    *
    */
    public interface HelloHessian {
    String sayHello();
    MyCar getMyCar();
    List<String> myLoveFruit();
    Map<String, String> myBabays();
    }
    package michael.hessian;
    import java.util.List;
    import java.util.Map;
    /**
    * @author michael
    *
    */
    public interface HelloHessian {
    String sayHello();
    MyCar getMyCar();
    List<String> myLoveFruit();
    Map<String, String> myBabays();
    }
    一个java bean文件MyCar.java:
    Java代码
    package michael.hessian;
    import java.io.Serializable;
    /**
    * @author michael
    *
    */
    public class MyCar implements Serializable {
    /**
    *
    */
    private static final long serialVersionUID = 4736905401908455439L;
    private String carName;
    private String carmodel;
    /**
    * @return the carName
    */
    public String getCarName() {
    return carName;
    }
    /**
    * @return the carmodel
    */
    public String getCarmodel() {
    return carmodel;
    }
    /**
    * @param pCarName the carName to set
    */
    public void setCarName(String pCarName) {
    carName = pCarName;
    }
    /**
    * @param pCarModel the carmodel to set
    */
    public void setCarModel(String pCarmodel) {
    carModel = pCarmodel;
    }
    /**
    * @see java.lang.Object#toString()
    * @return
    */
    @Override
    public String toString() {
    return "my car name:[" + this.carName + "] model:[" + this.carmodel
    + "].";
    }
    }
    package michael.hessian;
    import java.io.Serializable;
    /**
    * @author michael
    *
    */
    public class MyCar implements Serializable {
    /**
    *
    */
    private static final long serialVersionUID = 4736905401908455439L;
    private String carName;
    private String carmodel;
    /**
    * @return the carName
    */
    public String getCarName() {
    return carName;
    }
    /**
    * @return the carmodel
    */
    public String getCarmodel() {
    return carmodel;
    }
    /**
    * @param pCarName the carName to set
    */
    public void setCarName(String pCarName) {
    carName = pCarName;
    }
    /**
    * @param pCarModel the carmodel to set
    */
    public void setCarModel(String pCarmodel) {
    carModel = pCarmodel;
    }
    /**
    * @see java.lang.Object#toString()
    * @return
    */
    @Override
    public String toString() {
    return "my car name:[" + this.carName + "] model:[" + this.carmodel
    + "].";
    }
    }
    服务端接口的实现类:HelloHessianImpl.java
    Java代码
    package michael.hessian.impl;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import michael.hessian.HelloHessian;
    import michael.hessian.MyCar;
    /**
    * @author michael
    *
    */
分享到:
0
相关阅读
友情链接
© 2018 我考网 http://www.woexam.com 中国互联网举报中心 湘ICP备18023104号 京公网安备 11010802020116号
违法和不良信息举报:9447029@qq.com