Hessian是一个基于http协议的轻量级RMI框架,因此可以无视防火墙,并且采用自定义的二进制协议进行数据传输,相比原生RMI减少了对象的网络传输。
使用Hessian非常简单,提供远程服务不需要像RMI那样需要实现指定接口。
使用Hessian发布远程服务的步骤:
首先下载jar包,下载地址在这里
将jar包放在web项目WEB-INF/lib目录下。
接下来编写Hello接口:
public interface Hello {
public String hello(String name);
}
这个接口就是对外服务的方法集。
实现Hello接口:
public class HelloImpl implements Hello{
public String hello(String name) {
return "hello "+name;
}
}
这个类就是实现远程服务的具体类,可以看到和普通的java类没有任何区别。
这样服务就算写好了。
配置web.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>Hessian</display-name>
<servlet>
<servlet-name>hessian</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>service-class</param-name>
<param-value>impls.HelloImpl</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hessian</servlet-name>
<url-pattern>/hessian</url-pattern>
</servlet-mapping>
</web-app>
上面其实就是配置了一个servlet,来处理/hessian的请求。
启动web项目。
最后测试:
public class ClientTest {
public static void main(String[] args) throws MalformedURLException {
String url="http://localhost:8080/Hessian/hessian";
HessianProxyFactory factory=new HessianProxyFactory();
Hello hello=(Hello) factory.create(Hello.class,url);
System.out.println(hello.hello("yukjin"));
}
}
输出结果:
hello yukjin
本文介绍了如何使用Hessian提供远程服务,它是一个基于http的RMI框架,能穿透防火墙并使用二进制协议减少传输开销。无需像RMI那样实现特定接口,部署简单。包括下载Hessian jar包、编写接口和实现类、配置web.xml以及测试服务。

2611

被折叠的 条评论
为什么被折叠?



