`

Hessian

阅读更多

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

Hessian 介绍

注意事项

  在进行基于Hessian的项目开发时,应当注意以下几点:
  ▲JAVA服务器端必须具备以下几点:
  ·包含Hessian的jar包
  ·设计一个接口,用来给客户端调用
  ·实现该接口的功能
  ·配置web.xml,配好相应的servlet
  ·对象必须实现Serializable 接口
  ·对于复杂对像可以使用Map的方法传递
  ▲客户端必须具备以下几点:
  ·java客户端包含Hessian.jar的包。C#中引用hessianCSharp.dll
  ·具有和服务器端结构一样的接口。包括命名空间都最好一样
  ·利用HessianProxyFactory调用远程接口。
  简单JAVA客户端例子:

服务器端

  新建一个名EasyHession的webProject项目,将Hessian.jar放入web-inf下的lib中
  创建接口:
  
packageapp.demo; 
  public interface BasicAPI { 
  public void setGreeting(String greeting); 
  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 Stringg etUserName() { 
  returnuserName; 
  } 
  public String getPassword() { 
  returnpassword; 
  } 
  } 

 

  接下来是配置web.xml
  
<?xml version="1.0"encoding="UTF-8"?> 
  <web-app version="2.4" 
  xmlns="http://java.sun.com/xml/ns/j2ee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
  <servlet> 
  <servlet-name>hello</servlet-name> 
  <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class> 
  <init-param> 
  <param-name>service-class</param-name> 
  <param-value>app.demo.BasicService</param-value> 
  </init-param> 
  </servlet> 
  <servlet-mapping> 
  <servlet-name>hello</servlet-name> 
  <url-pattern>/hello</url-pattern> 
  </servlet-mapping> 
  </web-app> 

 

 

  为了测试可以在编辑一个简单的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() { 
  return userName; 
  } 
  public StringgetPassword() { 
  return password; 
  } 
  } 

 

创建客户端程序

  
importcom.caucho.hessian.client.HessianProxyFactory; 
  public class BasicClient { 
  public static void main(String[] args) 
  throwsException 
  { 
  String url ="http://127.0.0.1:8080/Hessian/hello"; 
  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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics