Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1346228
  • 博文数量: 205
  • 博客积分: 6732
  • 博客等级: 准将
  • 技术积分: 2835
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-04 17:59
文章分类

全部博文(205)

文章存档

2016年(1)

2015年(10)

2014年(1)

2013年(39)

2012年(23)

2011年(27)

2010年(21)

2009年(55)

2008年(28)

我的朋友

分类: 系统运维

2012-05-03 21:10:24

    Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据

Hessian 介绍 注意事项  在进行基于Hessian的项目开发时,应当注意以下几点:
  ▲JAVA服务器端必须具备以下几点:
  ·包含Hessian的jar包
  ·设计一个接口,用来给调用
  ·实现该接口的功能
  ·配置,配好相应的servlet
  ·对象必须实现Serializable 接口
  ·对于复杂对象可以使用Map的方法传递
  ▲客户端必须具备以下几点:
  ·java客户端包含Hessian.jar的包。C#中引用hessianCSharp.dll
  ·具有和服务器端结构一样的接口。包括命名空间都最好一样
  ·利用HessianProxyFactory调用远程接口。
  简单JAVA客户端例子: 服务器端  新建一个名EasyHession的webProject项目,将Hessian.jar放入下的lib中
  创建接口:
  packageapp.demo;
  public interfaceBasicAPI {
  public void setGreeting(Stringgreeting);
  public String hello();
  public User getUser();
  }
  实现接口:
  packageapp.demo;
  publicclass BasicService implements BasicAPI {
  privateString _greeting = "Hello, world";
  public void setGreeting(String greeting)
  {
  _greeting = greeting;
  System.out.println("set greetingsuccess:"+_greeting);
  }
  public String hello()
  {
  return _greeting;
  }
  public User getUser() {
  return new User("prance", "meshow");
  }
  }
  创建一个实现Serializable的projo类也可以是Bean。
  package app.demo;
  import java.io.Serializable;
  public class User implements Serializable{
  String userName ="snoopy";
  String password ="showme";
  public User(Stringuser, String pwd) {
  this.userName =user;
  this.password= pwd;
  }
  public StringgetUserName() {
  returnuserName;
  }
  public StringgetPassword() {
  returnpassword;
  }
  }
  接下来是配置web.xml
  
  
  xmlns=""
  xmlns:xsi=""
  xsi:schemaLocation="
  /web-app_2_4.xsd">
  
  hello
  com.caucho.hessian.server.HessianServlet
  
  service-class
  app.demo.BasicService
  
  
  
  hello
  /hello
  
  
  为了测试可以在编辑一个简单的test.jsp
  <%@ pageimport="com.caucho.hessian.client.HessianProxyFactory,
  app.demo.BasicAPI"%>
  <%@page language="java"%>
  <%
  HessianProxyFactory factory = newHessianProxyFactory();
  String url = ("http://" +request.getServerName() + ":" +request.getServerPort() +
  request.getContextPath() + "/hello");
  out.println(url);
  BasicAPI basic = (BasicAPI) factory.create(BasicAPI.class,url);
  out.println("Hello: " + basic.hello());
  out.println("Hello: " + basic.getUser() .getUserName() );
  out.println("Hello: " +basic.getUser().getPassword() );
  %>
  将一切配置成功后,将项目发布到web 服务器上去,可以是Tomcat,Rain等等。
  进入
  结果如下:
  Hello: Hello, world
  Hello: snoopy
  Hello: showme
  说明服务器端已经编写成功。 java客户端  创建一个名为HessianClient的JAVAProject,载入hessian.jar包
  创建与服务器端一样的接口,及基础类
  public interface BasicAPI{
  public void setGreeting(Stringgreeting);
  public String hello();
  public User getUser();
  }
  import java.io.Serializable;
  public class User implements Serializable{
  String userName ="snoopy";
  String password ="showme";
  public User(Stringuser, String pwd) {
  this.userName =user;
  this.password= pwd;
  }
  public StringgetUserName() {
  returnuserName;
  }
  public StringgetPassword() {
  returnpassword;
  }
  } 创建客户端程序  importcom.caucho.hessian.client.HessianProxyFactory;
  public class BasicClient {
  public static void main(String[] args)
  throw***ception
  {
  String url ="";
  HessianProxyFactoryfactory = new HessianProxyFactory();
  BasicAPIbasic = (BasicAPI) factory.create(BasicAPI.class, url);
  System.out.println("Hello:" + basic.hello());
  System.out.println("Hello:" + basic.getUser().getUserName());
  System.out.println("Hello:" + basic.getUser().getPassword());
  basic.setGreeting("HelloGreeting");
  System.out.println("Hello:" + basic.hello());
  }
  }
  运行结果:
  Hello: Hello, world
  Hello: prance
  Hello: meshow
  Hello: Hello Greeting
阅读(892) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~