关于hessian的一些认识
发布时间:2020-12-17 02:06:48 所属栏目:安全 来源:网络整理
导读:Hessian是一个解耦合的远程调用包 1、hessian是基于http协议的,使用自己的序列化机制,这里和RMI不同,RMI是使用java的序列化机制,包路径不能改变。 2、Hessian中接口的包路径可以不一样,即:server端和client端的接口包路径可以不同(不知道类名可不可以
Hessian是一个解耦合的远程调用包
1、hessian是基于http协议的,使用自己的序列化机制,这里和RMI不同,RMI是使用java的序列化机制,包路径不能改变。 2、Hessian中接口的包路径可以不一样,即:server端和client端的接口包路径可以不同(不知道类名可不可以不同),如:在server端开放接口为:com.topsoft.service.TestImpl在client端接收时为:com.topsoft.hessian.Test_Test 3、接口类的名字可以不一样,示例同上 4、远程调用hessian服务其实只需要一个接口,不需要依赖的entity。其中涉及到的实体,hessian以map形式来传递值 如:server端有方法:public TestEntity getObj(TestEntity entity);//其中TestEntity是一个测试实体。有三个简单的属性:name;pwd;key; 在client端可用如下方法调用:(当然客户端需要修改接口为 Map getObj(Map entity)); Map entity=new HashMap(); entity.put("name","你好"); entity.put("pwd","123"); entity.put("key",123); Map obj=test.getObj(entity); 注:如果在client端传实体,则必须与server端的实体一致。这里的实体需要继承Serializable接口,但是serialVersionUID 并不影响实体的一致性。 这里如果客户端接口修改为Object getObj(Object entity),会有两种情况,如果客户端CLASSAPTH存在TestEntity这个实体,则获得的是实体,如果不存在,则获得HashMap. 5、hessian传递Collection Hessian对于容器的传递,如果client端容器中该对象类型在CLASSPATH中存在,则容器内是传递的对象,如果不存在,则被转换为HashMap对象。要注意:如果对象类型在CLASSPATH中存在,却想强转是会抛异常的。 6、hessian远程调用分析: Hessian 的client远程调用时,其实是转化为http请求发送出(HttpURLConnection)去的,发送格式如下: POST /test/testService HTTP/1.1 Content-Type: x-application/hessian User-Agent: Java/1.5.0_15 Host: 127.0.0.1:8080 Accept: text/html,image/gif,image/jpeg,*; q=.2,*/*; q=.2 Connection: keep-alive Transfer-Encoding: chunked 以下是请求中的方法和参数,经过hessian的转化这里不再贴了 返回内容格式如下: HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: application/x-hessian Transfer-Encoding: chunked Date: Thu,17 Dec 2009 08:39:13 GMT 以下是请求方法的返回结果,经过hessian的转化这里不再贴了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Webpack,Typescript和Angular2与时间(AOT)汇编?
- Angular2 Observable BehaviorSubject服务不起作用
- macos – 在OSX上通过docker-py连接到Docker-Machine
- AngularJS的学习--$on、$emit和$broadcast的使用
- Bash:如何简单地并行化任务?
- 如何在Scala“match”语句中匹配课程?
- angularjs – 在哪里可以初始化模块范围的变量?
- active-directory – 如何从Active Directory服务器下载头像
- 使用Viper和Vimpulse的Emacs中缺少Vim功能?
- angularjs – 获取ng-repeat以使用对象属性顺序