小试Hession

hession 个人理解类似于java里面的rmi,即远程调用,为什么有了rmi还会有hession呢 ,个人理解是rmi不跨平台,只能在java直接调用,但是hession可以做到跨平台,比如说后台是java写的,客户端是C#的,只要接口java和C#的定义成一致即可,包括如果传输的参数是对象的话,也保持对象一致(包括类名和属性名称)。这样开发起来相对于webservice而言比较快速,也是轻量级的,还有一个很重要的原因就是webservice不能传输二进制流但是hession可以传递二进制流,因为hessio的协议交互本身就是靠二进制流传输的。

下面是一个hession的列子:

   服务断代码:

   这是一个接口:

   

package com.djk.hession;

public interface ISay 
{
	void say(Person person);
}

这是接口的实现类:

package com.djk.hession;

public class SayImpl implements ISay
{

	@Override
	public void say(Person person) 
	{
		System.out.println(person);
	}

}

这是参数对象:

package com.djk.hession;

import java.io.Serializable;

public class Person implements Serializable
{

	private static final long serialVersionUID = 794513777007240506L;

	private String id;
	
	private String name;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "Person [id=" + id + ", name=" + name + "]";
	}
	
}

接下来是web.xml里面的hession的servlet配置:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
	<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>com.djk.hession.SayImpl</param-value>
		</init-param>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>hello</servlet-name>
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>
</web-app>

这样hession的服务端就开发完成了,接下来是hession的客户端开发 这边也是用java开发的当然可以换成C#的。

首先是接口,这个接口要和服务端的接口保持一致:

package com.djk;

import com.djk.hession.Person;

public interface ISay {
	void say(Person person);
}

传输的参数对象,这个对象也要和服务端的对象保持一致:

package com.djk.hession;

import java.io.Serializable;

public class Person implements Serializable
{

	private static final long serialVersionUID = 794513777007240506L;

	private String id;
	
	private String name;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "Person [id=" + id + ", name=" + name + "]";
	}
	
}

客户端测试代码:

package com.djk;

import java.net.MalformedURLException;

import com.caucho.hessian.client.HessianProxyFactory;
import com.djk.hession.Person;

public class Test2
{
	public static void main(String[] args) throws MalformedURLException {
	      // Hessian代理工厂  
        HessianProxyFactory factory = new HessianProxyFactory();  
        // 访问配置的Servlet路径  
        String url = "http://localhost:9998/HessionServer/hello";  
  
        // 使用Hessian工厂获得接口的具体实现类  
        ISay i = (ISay) factory.create(ISay.class, url);  
  
        Person person = new Person();
        person.setId("1");
        person.setName("djk");
         i.say(person);
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值