Hessian简要入门
来源:互联网 发布:mysql grant 编辑:程序博客网 时间:2024/06/07 23:31
原本系统之间通信采用Restful Web Service,但其中没有考虑安全性问题,因此决定使用稍微复杂点的二进制协议,Hessian服务。
Hessian是一个轻量级的Remoting On HTTP工具,使用简单的方法提供了RMI的功能,相比Web Service,Hessian更简单,快捷,采用的是二进制RPC协议。
Hessian处理过程的简要流程:
客户端 - 序列化写到输出流 - 远程方法(服务器端) - 序列化写到输出流 - 客户端读取输入流 - 输出结果
Hessian通过Servlet提供远程服务,需要将匹配某个模式的请求映射到Hessian服务。如果集成到Spring中,可以通过DispatcherServlet完成此功能,DispatcherServlet可以将匹配模式的请求转发到Hessian服务。
<servlet> <servlet-name>spring-mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/config/springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup></servlet><servlet-mapping> <servlet-name>spring-mvc</servlet-name> <url-pattern>/</url-pattern></servlet-mapping>
配置web.xml,将任意请求都映射到该Dispatcher中。
首先,使用SimpleUrlHandlerMapping,制定对应的service URL,和对应的服务接口,服务实现:
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="order" value="100"/> <property name="urlMap"> <map> <entry key=“/remote/xxxService" value-ref="diabloService"/> </map> </property></bean><bean id="diabloService" class="org.springframework.remoting.caucho.HessianServiceExporter"> <property name="service" ref="diabloTaskService"/> <property name="serviceInterface" value="com.xxxx.IXXXTaskService"/></bean><bean id="diabloTaskService" class="com.xxxx.framework.hessian.XXXTaskServiceImpl"/>
在客户端和服务端之间,需要共享服务接口对象以及接口中使用的对象,注意自定义的对象由于要进行二进制传输,必须要实现java.io.Serializable接口。比较好的方式使用一个公用的maven私服,这样就可以避免接口改动造成的频繁jar包传输。
在客户端中,需要知道Hessian服务对应的Url,这个是通过上面所说的service url以及服务器地址,端口得到的。
客户端方面的方法也比较简单,通过Url得到对应的服务代理,来进行下一步操作:
HessianProxyFactory factory = new HessianProxyFactory();try { String url = "http://127.0.0.1:8888/remote/xxxService"; IXXXTaskService xxxTaskService = (IXXXTaskService) factory.create(IXXXTaskService.class, url); XXXResultStatus status = xxxTaskService.submitTask("211", contentBuilder.toString()); System.out.println(status);} catch (MalformedURLException e) { e.printStackTrace();}
如果服务已经启动,那么该服务肯定执行成功。
在Spring中调用Hessian服务也非常简单和容易,只需要在任务中新建一个HessianProxyFactoryBean,并指定对应的服务url和服务接口即可。
<bean id="testHessianService" class="org.springframework.remoting.caucho.HessianProxyFactoryBean"> <property name="serviceUrl" value="http://localhost:8888/spring2/hessian/hessianService"/> <property name="serviceInterface" value="com.cjm.webservice.hessian.HessianService"/></bean>
Hessian 是由 caucho 提供的一个基于 binary-RPC 实现的远程通讯 library,基于 Binary-RPC 协议实现,需通过 Hessian 本身提供的 API 来发起请求,Hessian 通过其自定义的串行化机制将请求信息进行序列化,产生二进制流,Hessian 基于 Http 协议进行传输,响应端根据 Hessian 提供的 API 来接收请求,Hessian 根据其私有的串行化机制来将请求信息进行反序列化,传递给使用者时已是相应的请求信息对象了,处理完毕后直接返回, hessian 将结果对象进行序列化,传输至调用端。
0 0
- Hessian简要入门
- Hessian入门
- Hessian入门
- Hessian 入门
- Hessian入门
- hessian 入门
- Hessian入门
- hessian入门
- Hessian简单入门
- hessian 入门错误解决
- Hessian简单入门
- Hessian一个入门案例
- Hessian入门案例
- Hessian入门相关
- Hessian的入门
- —Hessian入门
- 1、Hessian入门
- hessian入门,spring集成
- shiro 访问项目根路径不拦截
- MapReduce启动的Map/Reduce子任务简要分析
- linux tar 解压宝座
- hdu 2923 Einbahnstrasse
- spring quartz cronExpression表达式生成器
- Hessian简要入门
- mysql每天执行任务
- Hive语句执行优化-简化UDF执行过程
- Android TextInputEditText设置 android:inputType="textPassword"去掉眼睛
- java 获取数组的最大值和最小值
- Apache common exec包的相应使用总结
- java计算链表、数组列表或数组中最大元素
- python进阶学习笔记(四)——python中访问限制、创建类属性、定义实例方法、定义类方法、类的继承
- java.lang.String.trim(), 不仅仅去掉空格