Spring集成Hessian框架
1.服务端暴露服务配置
首先配置web.xml
增加appService-servlet.xml配置
2.客户端配置
如果大家对Hessian远程调用过程比较感兴趣,可以开启远程调试功能,具体在虚拟机启动时添加下面参数
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=2050"
然后在HttpServlet类的Service方法中添加断点并在客户端进行一次远程调用,此时进入Debug
下面是客户端Hessian进行远程调用过程
某个功能模块用到Hessian远程调用,客户端会产生一个代理类AppServiceProxy,这个代理类实现了AppService接口的方法,方法的实现就是去调用HessianProxy的invock方法,将方法调用及参数转换为一个对指定URL的Post请求,方法参数会被Hessian序列化放到Post的Body部分。其中url就是http://${server}:${port}/remote/appService。
下面是服务端对Hessian请求处理过程
FrameworkServlet,DispatcherServlet,HessianServiceExporter,Hessian2SkeletonInvocker都是Spring中的类,其中DispatcherServlet是一个请求分发器,最终请求会被HessianSkeleton翻译为一次本地方法调用,并将方法调用返回值用Hessian序列化作为请求的返回。