Spring + 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 是一个二进制协议,提供web 服务就像创建Servlet一样简单. 使用服务就像使用JDK代理接口一样简单
com.caucho.hessian.client
com.caucho.hessian.server 并不是必须的,可以使用简单的客户端,比如applets.
如何开发Hessian:
1. 下载Spring[2.56]包和Hessian[3.1.6包
2. 新建一个项目,并把spring和Hessian的架包加入到项目当中.
3. 新建web.xml,并加入Hessian和Spring支持,配置如下:
加载Spring
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/remoting-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
拦截请求,使用Hessian发布服务
<servlet>
<!-- 配置Servlet名,后面根据该名完成远程服务映射-->
<servlet-name>remoting</servlet-name>
<!-- Hessian远程服务需要HessianServlet暴露Hehes-->
<servlet-class>
<!--集成到Spring 在Spring-webmvc-2.5.6里面-->
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<!-- 随应用启动而启动 -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 映射Servlet的url,该Servlet的url就是Hessian服务名-->
<servlet-mapping>
<servlet-name>remoting</servlet-name>
<!-- 远程服务名为hessianService-->
<url-pattern>/remoting/*</url-pattern>
</servlet-mapping>
remoting-servlet.xml配置如下:
<bean id="hello" class="com.module.impl.HelloImpl"/>
<bean name="/Hello"
class="org.springframework.remoting.caucho.HessianServiceExporter">
<!— Hessian服务的实现类-->
<property name="service" >
<ref bean="hello" />
</property>
<!-- Hessian服务的接口-->
<property name="serviceInterface" value="com.module.Hello"/>
</bean>
现在我们准备在客户端连接这个业务。我们使用BeanNameUrlHandlerMapping,就不需要指定处理器映射将请求(url)映射到业务上,因此业务提供在
${ServletMapping}/Hello上。
com.module.Hello接口定义:
public interface Hello {
public String hello();
}
com.module.HelloImpl实现类定义:
public class HelloImpl implements Hello {
public String hello() {
return "hello " + "欢迎学习Hessian";
}
}
很简单的一个服务,把程序发布的Web服务器下,然后启动服务.
访问网址: http://localhost/Hessian/remoting/Hello
你会得到一个错误信息: HTTP Status 405 - HessianServiceExporter only supports POST requests说明已经发布成功!.
Hessian缺少的,服务列表的提供,这个可以自己写一个方法展示全部的Hessian服务,并写TestCase来测试所有服务,最后把服务发布到服务器上.
因为Hessian是基于Binary-RPC协议实现的,他的请求是通过Hessian本身提供的API来发起请求.并通过其自定义的串行化机制将请求信息序列化,产生二进制流,其基于HTTP协议进行传输,他的响应是根据Hessian提供的API接收请求,Hessian根据其私有的串行化机制将请求进行反序列化,传递给使用者时已经是相应的请求信息对象了. 处理完毕后直接返回,hessian将结果对象进行序列化,传输至调用端。
下图展示了Hessian是怎么发送对象到返回对象的数据流:
- 大小: 23.5 KB
分享到:
相关推荐
NULL 博文链接:https://qinghua0208.iteye.com/blog/493516
该案例有hessian java python,该案例有hessian java python,该案例有hessian java python
Hessian多个版本下载,包括Hessian3.1.6,Hessian3.2.1,Hessian4.0.7
hessian资料3hessian资料3hessian资料3hessian资料3hessian资料3
hessian源码
基于Hessian的冠状动脉血管造影分割方法
Hessian服务端 入门程序
dubbo-hessian协议http请求demo
NULL 博文链接:https://paopaochao3.iteye.com/blog/550771
多尺度hessian滤波器,图像增强,参考frangi的论文
1、开发环境:eclipse3.1 + jdk1.5; 2、样例说明: 1)spring + hessian; 2)hessian。 3、样例内容: 1)HashMap传递; 2)简单对象传递; 3)异常处理
hessian是一个轻量级的Java Remoting方案
Hessian android客户端异步请求访问包
hessian 服务端 客户端 可运行
赠送jar包:hessian-4.0.63.jar; 赠送原API文档:hessian-4.0.63-javadoc.jar; 赠送源代码:hessian-4.0.63-sources.jar; 赠送Maven依赖信息文件:hessian-4.0.63.pom; 包含翻译后的API文档:hessian-4.0.63-...
Hessian案列代码
一个简单的Hessian,简单介绍了Hessian的使用方式,介绍了Hessian和Spring集成的使用方式,以及单独使用Hessian的方式。
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。参考文档地址...
hessian.jarhessian.jarhessian.jarhessian.jarhessian.jarhessian.jarhessian.jar
Hessian一般是通过Web应用来提供服务,因此非常类似于平时我们用的 WebService。只是它不使用SOAP协议,但相比webservice而言更简单、快捷。这个文件可以是hessian在spring项目和web项目的简单配置