名词介绍:
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。
注意事项:
在进行基于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 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"); } }
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; } }
<?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: prance,meshow 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) 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