分布式设计《初尝hessian》

来源:互联网 发布:中小型网络拓扑图 编辑:程序博客网 时间:2024/05/16 12:49

      之前接触过EJB的RMI,但是个人感觉由于EJB是个重型框架,以至于你很难在项目中只使用EJB的一个两个特性来提高开发效率。近期接触到hessian,一个非常优秀的RMI轻量级框架,在此做个记录,后续会出更进阶的文章出来和大家一起分享。

      翻译了hessian官网的一段介绍,希望大家会对hessian有个初步的认识。

      hessian二进制web service 协议可以让web service不需要依赖一个重量级框架,也不需要使用者学习形形色色的网络协议。因为hessian就是一个二进制协议,它能够不依赖于任何扩展协议来很方便的发送二进制数据。

【实现步骤】


1、编写服务端接口

package com.lvmama.hessian.service.impl;public interface BaseService {public abstract void setStr(String str);public abstract void say();}

2、编写服务端实现

package com.lvmama.hessian.service.impl;import com.caucho.hessian.server.HessianServlet;public class BaseServiceImpl extends HessianServlet implements BaseService {private String str;public void setStr(String str) {this.str = str;}public void say() {System.out.println(str);}}


3、配置服务端servlet

<servlet>  <servlet-name>baseService</servlet-name>  <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>    <init-param>  <param-name>home-class</param-name>  <param-value>com.lvmama.hessian.service.impl.BaseServiceImpl</param-value>  </init-param>    <load-on-startup>1</load-on-startup>  </servlet>    <servlet-mapping>  <servlet-name>baseService</servlet-name>  <url-pattern>/baseService</url-pattern>  </servlet-mapping>


4、编写客户端测试类

package com.lvmama.hessian.client.impl;import java.net.MalformedURLException;import com.caucho.hessian.client.HessianProxyFactory;import com.lvmama.hessian.service.impl.BaseService;public class HessianClientImlp {public static void main(String[] args) throws MalformedURLException {String url = "http://localhost:8080/hessian_service_implement/baseService";HessianProxyFactory factory = new HessianProxyFactory();BaseService service = (BaseService)factory.create(BaseService.class, url);service.setStr(" hello tony!");service.say();}}

5、运行

控制台输出 hello tony!


【注意】

分析HessianServlet.java源码得知web.xml中配置param-name得配置成“home-class”或者"service-class"。要不然就会报这个错误

javax.servlet.ServletException: server must extend HessianServlet。


0 0