小试Hession
来源:互联网 发布:怎么开淘宝店啊 编辑:程序博客网 时间:2024/04/29 04:37
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{@Overridepublic 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;}@Overridepublic 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;}@Overridepublic 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
- 小试Hession
- Hession
- HESSION
- Hession
- 小技巧--利用firefox检测hession接口是否可用
- Hession入门
- Hession机制
- Hession入门
- Hession入门
- Hession矩阵
- Hession学习
- Hession使用
- Hession入门介绍
- Hession使用简单示例
- hession学习笔记
- Spring 整合Hession
- webservice,RMI和hession
- hession的使用
- 第一个activity xml的定义
- android 广播机制一
- Akka学习笔记02--PI值计算,采用多核处理器并行计算
- android 广播机制二
- 详解进程文件锁FileLock
- 小试Hession
- kernel oops
- phpStorm使用技巧总结
- 优先队列 选择优先度
- MFC用代码添加对话框背景图片和按钮图片
- 哈希表的构建与查询
- zjut_1190 列出完数
- 共享内存的管理-注意信号SIGSEGV和SIGBUS(修改过)
- GRLDR外部MENU.LST调用GRLDR内部菜单