Hessian是一个轻量级的remotingonhttp工具,使用简单的方法提供了RMI的功能。相比Webservice,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合发送二进制数据。
在进行基于Hessian的项目开发时,应当注意一下几点:
Java服务器端必须具备:
■包含Hessian的jar包
■设计一个接口,用来给客户端调用
■实现该接口的功能
■配置web.xml,配置好相应的servlet
■由于使用二进制RPC协议传输数据,对象必须进行序列化,实现Serializable接口
■对于复杂对象可以使用Map的方法传递
Java客户端必须具备:
□Java客户端包含Hessian的jar包
□具有和服务器端结构一样的接口,包括命名空间都最好一样
□利用HessianProxyFactory调用远程接口
Hessian的简单例子
Hessian服务端
第一步:创建Web Project(HessianServer),并将hessian-3.2.1.jar放入WEB-INF/lib文件夹下。
第二步:创建User类,注意:实现Serializable接口
import java.io.Serializable;
public class User implements Serializable{
private String name;
private Integer age;
public User() {
super();
}
public User(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
第三步:创建接口IBasicApi
import com.mahc.hessian.domain.User;
public interface IBasicApi {
/* 设置用户名 */
public boolean setUserName(String name);
/* 获取问候 */
public String sayHello();
/* 获取用户信息 */
public User getUser();
}
第四步:创建实现IBasicApi的BasicService
import com.mahc.hessian.domain.User;
public class BasicService implements IBasicApi{
private String name;
@Override
public boolean setUserName(String name) {
this.name = name;
return false;
}
@Override
public String sayHello() {
return "Hello "+ name+",Welcome to Hessian!";
}
@Override
public User getUser() {
return new User(name, 23);
}
}
第五步:配置WEB-INF下的web.xml<!-- Hessian在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>com.mahc.hessian.BasicService</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HessianServlet</servlet-name>
<url-pattern>/api/service</url-pattern>
</servlet-mapping>
Hessian客户端
第一步:创建Java Project(HessianClient),并将hessian-3.2.1.jar放入lib文件夹下
第二步:创建与服务端一致的com.mahc.hessian.domain.User和com.mahc.hessian.IBasicApi
第三步:创建客户端测试
public class ClientTest {
public static void main(String[] args) throws MalformedURLException {
String url = "http://localhost:8080/HessianServer/api/service";
HessianProxyFactory factory = new HessianProxyFactory();
IBasicApi api = (IBasicApi) factory.create(IBasicApi.class, url);
api.setUserName("mahc");
System.out.println(api.sayHello());
System.out.println(api.getUser().getName());
System.out.println(api.getUser().getAge());
}
}
第四步:部署HessianServer,启动Tomcat,运行ClientTest。查看运行结果。
总结:
在服务端需要配置接口与接口实现类,在web.xml里配置HessianServlet的servlet,并配置初始化参数,name为service-class,value为接口的实现类
在客户端需要配置与服务端相同名字的接口