加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Hessian

发布时间:2020-12-17 02:02:41 所属栏目:安全 来源:网络整理
导读:Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据 在进行基于Hessian的项目开发时,应当注意以下几点: ▲J

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

  }

  }

  创建一个实现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

  <?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等等。

  进入http://localhost:8080/EasyHessian/test.jsp

  结果如下:

  http://localhost:8080/Hessian/hello

  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 voidmain(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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读