`
_____bEn-beN
  • 浏览: 13672 次
社区版块
存档分类
最新评论

hessian接口

 
阅读更多

 

 

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

 

 

 

1   注意事项

 

在进行基于Hessian的项目开发时,应当注意以下几点:

 

▲JAVA服务器端必须具备以下几点:

 

·包含Hessianjar

 

·设计一个接口,用来给客户端调用

 

·实现该接口的功能

 

·配置web.xml,配好相应的servlet

 

·对象必须实现Serializable 接口

 

·对于复杂对象可以使用Map的方法传递

 

客户端必须具备以下几点:

 

·java客户端包含Hessian.jar的包。C#中引用hessianCSharp.dll

 

·具有和服务器端结构一样的接口。包括命名空间都最好一样

 

·利用HessianProxyFactory调用远程接口。

 

简单JAVA客户端例子:

 

2   服务器端

 

新建一个名EasyHessionwebProject项目,Hessian.jar放入web-inf下的lib

 

创建接口:

 

package app.demo;

 

public interface BasicAPI {

 

public void setGreeting(String greeting);

 

public String hello();

 

public User getUser();

 

}

 

实现接口:

 

package app.demo;

 

public class BasicService implements BasicAPI {

 

private String _greeting = "Hello, world";

 

public void setGreeting(String greeting)

 

{

 

_greeting = greeting;

 

System.out.println("set greeting success:"+_greeting);

 

}

 

public String hello()

 

{

 

return _greeting

 

}

 

public User getUser() {

 

return new User("prance", "meshow");

 

}

 

}

 

创建一个实现Serializableprojo类也可以是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 String getUserName() {

 

return userName;

 

}

 

public String getPassword() {

 

return password;

 

}

 

}

 

接下来是配置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 服务器上去,可以是TomcatRain等等。

 

进入

 

结果如下:

 

Hello: Hello, world

 

Hello: snoopy

 

Hello: showme

 

说明服务器端已经编写成功。

 

3   java客户端

 

创建一个名为HessianClientJAVAProject,载入hessian.jar

 

创建与服务器端一样的接口,及基础类

 

public interface BasicAPI{

 

public void setGreeting(String greeting);

 

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 String getUserName() {

 

return userName;

 

}

 

public String getPassword() {

 

return password;

 

}

 

}

 

4   创建客户端程序

 

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";

 

HessianProxyFactory factory = new HessianProxyFactory();

 

BasicAPI basic = (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