hessian的简单使用以及拙见

hessian简介
  优点:【摘自网上】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(比如网上支付等)、

 

hessian的学习很简单且容易上手,下面给一个简单的列子:

新建一个项目hessianTest,建立一个JavaBean,且必须实现序列化接口(对象需要序列化为二进制流在网络上传输)。

import java.io.Serializable;

public class Car implements Serializable{

	private String name;
	private String card;

    setter and getter。。。
}

 建立一个对外暴露的接口,以供客户端进行调用。

public interface CarInter {

	public String getName();
	public Car getCar();
}

在服务器端建立一个接口的实现类,对接口中的方法进行业务操作。

public class CarService implements CarInter {

	public Car getCar() {
		Car car = new Car();
		car.setCard("京A25450");
		car.setName("宝马");
        return car;
	}

	public String getName() {
		return "我是奥巴马!";
	}
}

 最后建立一个客户端,实例化一个hessian的代理工厂,调用接口方法,返回需要数据。[这里我把客户端调用和服务器端的业务操作都写在了一个项目中,你可以分离客户端和服务器端,实现远程调用。即把服务端发布到web服务器,在另一个程序中利用客户端(可以是个Java项目)调用接口方法]

public class CarClient {

	/**   
	 * @param args 
	 * @throws MalformedURLException 
	 */

	public static void main(String[] args) throws MalformedURLException {
		//该地址是服务端提供给你的接口调用地址
		String url = "http://localhost:8080/hessianTest/hello";
		HessianProxyFactory factory = new HessianProxyFactory();
		CarInter basic =(CarInter)factory.create(CarInter.class,url);
		Car car =basic.getCar();
		System.out.println("车的牌号:"+car.getCard());
		System.out.println("车的品牌:"+car.getName());
		System.out.println("我打印的字符串:"+basic.getName());
	}
}

 最重要的就是服务端对web.xml的配置,

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
   	<!-- 接口的实现类 -->
    <init-param>
       <param-name>home-class</param-name>
       <param-value>com.hessian.service.CarService</param-value>
    </init-param>
    <!-- 接口 -->
    <init-param>
       <param-name>home-api</param-name>
       <param-value>com.hessian.inter.CarInter</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
      <servlet-name>hello</servlet-name>
      <url-pattern>/hello</url-pattern>
  </servlet-mapping>

 据了解,Spring已经完美的实现了hessian,以后研究一下、

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值