本文共 3329 字,大约阅读时间需要 11 分钟。
Hessian是一种基于二进制Web服务协议的RPC服务,它最大的特点是一个轻量级的框架,基于二进制协议Binary-RPC,借助http进行交互的远程调用框架。因为它是一个二进制协议,它非常适合于发送二进制数据,而无需任何需要扩展的协议与附件。Binary-RPC 是一种和 RMI 类似的远程调用的协议,它和 RMI 的不同之处在于它以标准的二进制格式来定义请求的信息 ( 请求的对象、方法、参数等 ) ,这样做的好处是在跨语言通讯的时候也可以使用。
下图是Hessian官网的截图,目前已经支持多种语言:http://hessian.caucho.com/
1、下载java 版的 Hessian jar 包
2、准备Myeclipse开发一个servlet工程
1、创建一个服务接口java类
2、实现这个服务接口
3、配置web.xml (这步是核心,前面2步和普通的servlet没有区别,配置web.xml时,需要继承HessianServlet 接口
4、发布运行
1、需要接口类
2、通过HessianProxyFactory 获取代理工厂
3、通过这个代理工厂创建客户端对服务端操作的对象
4、调用服务端暴露的方法
1) 创建一个web 工程, StudyHessian,并在这个工程里面,创建一个服务接口 Hello.java
package com.hessian.demo;public interface Hello { String sayHello(String name); String getName ( );}2) 实现Hello的接口 HelloImpl.java
package com.hessian.demo;public class HelloImpl implements Hello{ String myName="null"; /* * 实现接口Hello的方法,传入名字,赋值给成员变量后,返回 hello,名字 * @see com.hessian.demo.Hello#saytHello(java.lang.String) */ public String sayHello(String name){ myName = name; return "hello,"+name+"! "; } /* * 实现接口类,获取名字 * @see com.hessian.demo.Hello#getName() */ public String getName ( ){ return myName; }}3) 编写web.xml并发布
StudyHessian index.html index.htm index.jsp default.html default.htm default.jsp StudyHessian com.caucho.hessian.server.HessianServlet service-class com.hessian.demo.HelloImpl 1 StudyHessian /HelloServiceDemo
这里会有显示错误,不过不影响发布。应该是J2EE版本的问题
修复办法:
将 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"里面的 javaee 修改 j2ee 就可以了
4)运行并查看,出现下面内容,说明服务端已经正常
服务端日志如下:
信息: Deploying web application directory E:\cwqwork\MyEclipse_Workspace\.metadata\.me_tcat7\webapps\StudyHessian十二月 13, 2016 7:36:00 下午 org.apache.coyote.AbstractProtocol start信息: Starting ProtocolHandler ["http-bio-8080"]十二月 13, 2016 7:36:00 下午 org.apache.coyote.AbstractProtocol start信息: Starting ProtocolHandler ["ajp-bio-8009"]十二月 13, 2016 7:36:00 下午 org.apache.catalina.startup.Catalina start信息: Server startup in 1941 ms
URL验证:
2、客户端编写 HelloHessianClient.java
package com.hessian.demo.client;import java.net.MalformedURLException;import com.caucho.hessian.client.HessianProxyFactory; import com.hessian.demo.Hello;public class HelloHessianClient { public static void main(String[] args) { //服务端映射的访问URL地址 String url = "http://127.0.0.1:8080/StudyHessian/HelloServiceDemo"; HessianProxyFactory factory = new HessianProxyFactory(); Hello helloService = null; try { helloService = (Hello) factory.create(Hello.class, url); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } //调用接口的sayHello方法 System.out.println(helloService.sayHello( "boy" ) ); //调用服务器端的HelloImpl类中的getName方法 System.out.println(helloService.getName()); } }
3.运行客户端,客户端显示如下内容: