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
*
*/
小试Hessian实现webservice
分享到:
正在招生
友情链接