`
pangxin12345
  • 浏览: 189661 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hessian学习笔记

    博客分类:
  • java
阅读更多

1.Hessian 介绍

Hessian 是一个轻量级的remoting on http 工具,使用简单的方法提供了RMIRemote Method Invocation ,远程方法调用)的功能。采用的是二进制RPCRemote Procedure Call Protocol ,远程过程调用协议)协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。它提供web 服务就像创建Servlet 一样简单. 使用服务就像使用JDK 代理接口一样简单。

hessian 类似于 Webservice ,但是它不使用 soap 协议,它把协议报文封装到 http 封包中,通过 HTTP 信道传输。是一种高效简洁的远程调用框架,它采用的是二进制 RPC 协议( Binary ),具有轻量、传输量小、平台无关的特点,特别适合于目前网络带宽比较小的手机网络应用项目。 Hessian 是通过 servlet 提供远程服务,完全使用动态代理来实现的 , 推荐采用面向接口编程,因此, Hessian 服务建议通过接口暴露。 hessian 已经支持 Java Flash/Flex Python C++ .NET C# D Erlang PHP Ruby Objective C 。它不需要我们与 xml“ 打交道 ,直接操作对象,省去了很多麻烦。
缺点 如果 service 层中返回的对象是复杂对象 , 使用它就会削弱 Hessian 的传输量小的优点,而且也会增加 Hessian 客户端的代码 量。既然它是把对象序列化为二进制流的形式在 http 信道中传输,那么对于安全性高的应用不应该采用 hessian( 比如网上支付等 )

 

2.Hessian-Demo

初步感受一个hessian 的运行.

1.Java 服务器端:环境:jdk1.6,Tomcat6.0 依赖的包:hessian-3.0.20.jar

<1>. 新建一个名为HessianServerweb project 。将hessian-3.0.20.jar 放入WEB-INF/lib 文件夹中。

<2>. 接口:

package jay.demo.hessian.server;

import jay.demo.User;

public interface MyService {
	public void setName(String name);

    public String sayHello();

    public User getUser();
}

<3>. 实现类:

package jay.demo.hessian.server.impl;
import jay.demo.User;
import jay.demo.hessian.server.MyService;
public class MyServiceImpl implements MyService {

	private String name;
    public String sayHello() {
       return "Hello "+name;
    }
    public void setName(String name) {
       this.name=name;
       System.out.println("Hello "+name);
    }
    public User getUser() {
       return new User("Jay", "123456");
    }
 }

<4>.创建User类,注意:一定要implements Serializable.

package jay.demo;
import java.io.Serializable;
public class User implements Serializable {

    String name = "server-jay";
    String password = "server-pwd";
    public User() {}
    public User(String name, String password) {
       super();
       this.name = name;
       this.password = password;
    }
    public String getName() {
       return name;
    }
    public void setName(String name) {
       this.name = name;
    }
    public String getPassword() {
       return password;
    }
    public void setPassword(String password) {
       this.password = password;
    }
}

 <5>.配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <servlet>
    <servlet-name>first</servlet-name>
    <servlet-class>
com.caucho.hessian.server.HessianServlet
</servlet-class>
    <init-param>
        <param-name>service-class</param-name>
        <param-value>
jay.demo.hessian.server.impl.MyServiceImpl
</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>first</servlet-name>
    <url-pattern>/helloworld</url-pattern>
  </servlet-mapping>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 将项目发布到tomcat服务器上
2. Java客户端:环境:jdk1.6,Tomcat6.0 依赖的包:hessian-3.0.20.jar
<1>.创建一个名为HessianClient的java project,导入hessian-3.0.20.jar。
<2>.创建与服务器一样的接口及User类,注意它们所在的包路径也要与服务器相同,否则会出现java.lang.ClassNotFoundException。
<3>.客户端:

package jay.client;

import java.net.MalformedURLException;
import jay.demo.hessian.server.MyService;
import com.caucho.hessian.client.HessianProxyFactory;

/**
 * 
 * @author Jay.Sun 2010.10.12
 *
 */
public class clientTest {
	public static void main(String[] args) throws MalformedURLException,

    	ClassNotFoundException {
		String url = "http://localhost:8080/HessianServer/helloworld";
		//String url = "http://localhost:8080/HessianServer/remote/helloSpring";
	HessianProxyFactory factory = new HessianProxyFactory();
	//MyService myservice = (MyService) factory.create(url);
MyService myservice = (MyService) factory.create(MyService.class,url);
	myservice.setName("JaySun-test");
	System.out.println(myservice.sayHello());
	System.out.println(myservice.getUser().getName());
	System.out.println(myservice.getUser().getPassword());
    }
}

 启动tomcat,运行ClientTest。运行结果:
Hello JaySun-test
Jay
123456

后续加上整合Spring,今天先写到这里

  • lib.rar (2.8 MB)
  • 下载次数: 17
1
0
分享到:
评论

相关推荐

    Flex + Hessian 学习笔记(二)

    在“Flex + Hessian 学习笔记(二)”中,我们可能涉及以下知识点: 1. **Flex应用的架构**:Flex应用通常包含三层结构:表现层(Presentation)、业务逻辑层(Business Logic)和数据访问层(Data Access)。Hessian...

    WebService另一种轻量级实现—Hessian 学习笔记.rar

    **WebService的轻量级实现——Hessian学习笔记** 在IT行业中,WebService作为一种常见的跨平台、跨语言的通信机制,被广泛应用于系统间的交互。然而,传统的SOAP(Simple Object Access Protocol)协议实现的...

    Hessian的学习笔记

    Hessian学习笔记 Hessian是一种基于Binary-RPC协议实现的远程通讯library,由Caucho提供。下面是Hessian的学习笔记: 一、简介 Hessian是基于Binary-RPC协议实现的远程通讯library,用于实现远程过程调用(RPC)...

    Flex + Hessian 留言本

    Flex + Hessian 学习笔记(一) http://wangcheng.javaeye.com/blog/141382 Flex + Hessian 学习笔记(二) http://wangcheng.javaeye.com/blog/141539 Flex + Hessian 学习笔记(三) ...

    Hessian笔记

    【标题】:“Hessian笔记”主要探讨的是Hessian这一技术在IT领域的应用,尤其是与源码和工具相关的知识。Hessian是一种二进制的Remoting...这些资料对于学习和掌握Hessian技术,提升分布式系统开发能力具有很高的价值。

    SSH学习笔记6 SSH学习笔记6

    SSH的学习笔记通常涵盖以下几个主要方面: 1. **安装与配置**:在不同的操作系统(如Linux、macOS或Windows)上安装SSH客户端和服务端软件,例如OpenSSH。配置SSH服务,包括修改`sshd_config`文件以设置端口号、...

    路径规划-深蓝学院数值优化学习笔记(含PPT)

    深蓝学院的数值优化学习笔记提供了深入理解和掌握这一主题的关键资源。数值优化是寻找函数最小值或最大值的数学方法,它在路径规划中起到核心作用,帮助找到从起点到终点的最短或最优路径。 首先,我们要理解什么是...

    java后端学习笔记

    本篇文章将深入探讨“java后端学习笔记”中的关键知识点,包括消息队列(Message Queuing)服务如ActiveMQ和RabbitMQ、工作流引擎Activity、容器化技术Docker、分布式服务框架Dubbo、网络库Netty、RPC(Remote ...

    深度学习笔记:优化方法总结

    在本篇深度学习笔记中,我们主要总结了Momentum、RMSProp和Adam三种优化方法,同时简要介绍了病态曲率和牛顿法等概念。 #### 病态曲率 在优化过程中,我们会遇到病态曲率的问题,它指的是损失曲面上某个区域沿某个...

    MyDubbo:dubbo源码学习笔记

    《MyDubbo:Dubbo源码学习笔记》 在Java开发领域,Dubbo是一个非常知名的分布式服务框架,它由阿里巴巴开源并广泛应用于大型企业系统。本篇笔记将深入探讨Dubbo的核心概念、工作原理以及源码解析,帮助开发者更好地...

    陆吾生华东师大讲义笔记

    根据提供的文件信息,华东师范大学陆吾生教授的讲义笔记主要围绕最优化理论和相关算法,...通过这门课程,学生们可以学习到最优化问题的理论基础和多种求解策略,为解决实际工程和科研中的最优化问题打下坚实的基础。

    机器学习笔记

    根据所提供的文件信息,该份文档是一份机器学习的笔记,涵盖了众多机器学习领域的基本概念和技术。下面,我们将详细解读文件中所提到的机器学习知识点: 1. CS229是斯坦福大学开设的一门机器学习课程编号,由Andrew...

    spring学习笔记

    Spring框架是Java开发中不可或缺的一部分,它以IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)为...学习和理解Spring的这些核心概念,对于提升Java开发技能和优化项目结构至关重要。

    dubbo:dubbo学习笔记

    《Dubbo学习笔记详解》 Dubbo,作为阿里巴巴开源的一款高性能、轻量级的服务治理框架,已经在Java开发者中广受欢迎。它主要应用于分布式系统中的服务调用,提供服务注册、服务发现、负载均衡、容错处理等核心功能,...

Global site tag (gtag.js) - Google Analytics