`
maqujun
  • 浏览: 133308 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hessian笔记

    博客分类:
  • Java
阅读更多

1. 为什么选择Hessian

一直以来在工作中都是以使用SOAP的webservice如CXF,Axis等来实现和外部系统集成。但是使用的越多就越发现这东西性能上耗损太多。并且基本上没法适应Java与.net的集成(List数据传送都会带出很多问题)。而Hessian就相对轻量级很多,但为什么项目中不使用它呢~~是因为客户的系统多为IBM此类公司的系统,一般都是被忽悠着使用SOAP做为SOA的解决方案,完全没有可能去说服他们同样使用Hessian。所以这个东西不常用。

而现在选择Hessian是因为哥自己的做着玩的项目,哥想用什么就用什么!

 

2. Hessian介绍

Hessian的介绍就不贴了,可以看官网:http://hessian.caucho.com/doc/

中文的可以看baidu知道:http://baike.baidu.com/view/2255290.htm?fr=ala0_1_1#1

上面有基本的使用列子,很简单的实现方案。

 

3. Hessian与Spring的整合

这个是本文最重要的一个环节。spring的官网上有提过的。带来最大的好处是你不用再web.xml中一个个声明Hessian Service,而是可以通过定义在spring的*-servlet.xml中通过Spring DispatcherServlet来注册Hessian service.在hessian-servlet.xml中需要定义HessianServiceExporter class为Bean用以注册Service.

 

简单的Example:

在hessian-servlet.xml声明你的Hessian Service内容如下(以下Intf为Coral,Impl为CoralService):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	<bean id="coral" class="hessian.example.impl.CoralService" />

	<bean name="/coral"
		class="org.springframework.remoting.caucho.HessianServiceExporter">
		<property name="service" ref="coral" />
		<property name="serviceInterface" value="hessian.example.Coral" />
	</bean>
</beans>

 然后在web.xml中定义

	<servlet>
		<servlet-name>hessian</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>hessian</servlet-name>
		<url-pattern>/hessian/*</url-pattern>
	</servlet-mapping>

 配置就完成了。

 

调用的URL为:http://localhost:8888/yourApp/hessian/coral

 

 

注意: Spring与不同的版本间的Hessian整合是存在Bug的。我试过使用最新版本的Spring(2.5.3)以及最新版本的Hessian(3.2.1)会报出:com.caucho.hessian.io.HessianProtocolException: expected string at 0x6d的错误。但是当我把Hessian的版本退回到3.1.6后就没有这个错误。

 

 

 

*附件是自己收藏的小工具与本文无关。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics