Hessian介绍

相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。下面演示一个简单的Hessian示例程序。

Hessian的下载和安装

Hessian的下载和安装请按如下步骤进行:

(1)登http://www.caucho.com/hessian/下载Hessian的Java二进制包,笔者成书之时,Hessian的最新版本是Hessian 3.0.13。下载hessian-3.0.13.jar文件。

(2)将该文件复制到名为hessian的Web应用下,所有的jar文件都应该放在WEB-INF/lib下,该文件也不例外。

(3)为了编译Hessian客户端程序,建议将hessian-3.0.13.jar添加到环境变量里。

Hessian服务器端

推荐采用面向接口编程,因此,Hessian服务建议通过接口暴露。服务接口如下:

[code=javascript]//服务接口
public interface Hello
{
//方法声明
public String hello(String name);
}[/code]

接口的实现类如下:

[code=javascript]//服务实现类,实现Hello接口
public class HelloImpl implements Hello
{
public String hello(String name)
{
return "hello " + name + "欢迎学习Hessian";
}
}[/code]

这个接口和实现类简单得难以置信。它们没有任何特别之处,这正是Hessian的魅力,代码污染降低到最小。当然,只是示例程序,所以服务也相当简单。Hessian要求远程服务通过Servlet暴露出来,必须在web.xml文件中配置该Servlet。web.xml的详细配置如下:

[Copy to clipboard]
CODE:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Web配置文件的文件头,包含dtd等信息-->
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<!-- Web配置文件的根元素-->
<web-app>
<servlet>
<!-- 配置Servlet名,后面根据该名完成远程服务映射-->
<servlet-name>hessianService</servlet-name>
<!-- Hessian远程服务需要HessianServlet暴露Hehes-->
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<!-- 随应用启动而启动>
<load-on-startup>1</load-on-startup>
<!-- 使用init-param配置服务的实现类-->
<init-param>
<param-name>service-class</param-name>
<param-value>lee.HelloImpl</param-value>
</init-param>
</servlet>
<!-- 映射Servlet的url,该Servlet的url就是Hessian服务名-->
<servlet-mapping>
<servlet-name>hessianService</servlet-name>
<!-- 远程服务名为hessianService-->
<url-pattern>/hessianService</url-pattern>
</servlet-mapping>
</web-app>

将刚才的接口和实现放Web应用的WEB-INF/class路径下,编译它们。然后将此web.xml文件放在WEB-INF下,启动Web服务器。笔者使用的Web服务器是Tomcat5.0.28,Tomcat的端口是8888。则远程服务的url为http://localhost:8888/hessian/hessianService。

Hessian客户机端

Hessian的服务可以用HessianProxyFactory工具类调用,还可以在小型智能设备上调用。HessianProxyFactory的create方法,用于获取Hessian服务的远程引用。Hessian的客户端如下:

[code=javascript]public class HessianClient
{
public static void main(String []args) throws Exception
{
//Hessian服务的url
String url = "http://localhost:8888/hessian/hessianService";
//创建HessianProxyFactory实例
HessianProxyFactory factory = new HessianProxyFactory();
//获得Hessian服务的远程引用
Hello d = (Hello) factory.create(Hello.class, url);
//调用远程服务。
System.out.println("下面调用Hessian服务: " + d.hello("yeeku"));
}
}[/code]

客户端仅仅需要Hello接口,而无须真实的实现类。如果使用小型智能设备作为客户端的运行环境,客户端代码片段如下:

[code=javascript]//创建Hessian输入流,用于输入请求
MicroHessianInput in = new MicroHessianInput();

//Hessian服务的url
String url = "http://localhost:8888/hessian/hessianService";

//创建HttpSConnection实例
HttpConnection c = (HttpConnection) Connector.open(url);

//设置参数提交方式
c.setRequestMethod(HttpConnection.POST);

//打开输出流,准备调用服务器方法
OutputStream os = c.openOutputStream();

//以输出流创建MicroHessianOutput对象,该对象用于调用hessian的方法
MicroHessianOutput out = new MicroHessianOutput(os);

//调用远程方法:hello是方法名,yeeku是参数
out.call("hello", "yeeku");

os.flush();

//打开输入流,准备接收返回值
is = c.openInputStream();

//以输入流为参数,创建MicroHessianInput对象
MicroHessianInput in = new MicroHessianInput(is);

//获得返回值
Object value = in.readReply("yeeku");[/code]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值