httpInvoker获取客户端request

最近在使用HttpInvoker需要获取客户端的request进行额外操作,上网搜了一些资料,不过没有找到相关资料,区别去xfire获取 request时使用的XfireServletAction.getRequest(),貌似没有看到httpInvoker提供这样的API
所以不能不去看源码。

先来看下HttpInvokerServiceExporter服务导出的源码:

handlerRequest执行了三部操作:

   1、获取客户端request请求,通过HTTP请求,得到客户端传过来的RemoteInvocation对象,该对象中封装了服务调用需要的基本信息。

   2、服务方法的调用,构建远端服务返回的结果,以RemoteInvocationResult返回,这一过程中蛮重要的一点是完成对象序列化。(后来在比较中才发现hessian和http-invoker的content-type的区别就在于这个地方)

   3、设置response的content-type,同时将result输出到http的response.

(个人理解还不够透彻.....我说错的地方,还请指出!谢谢)

所以其实Http-invoker这边还是可以获取到request,只是并没有提供一个地方保存当前线程的request,所以在这个地方进行了改动。

首先自定义一个类,用于保存当前request

然后修改HttpInvokerServiceExporter,在获取客户端request的时候将当前request保存进来

最后修改下配置

 <bean name="/userLoginService" class="com.pokercity.core.httpInvoker.SelfHttpInvokerExporter">
  <property name="service" ref="userLoginService" />
  <property name="serviceInterface" value="com.pokercity.service.IUserLoginService" />
 </bean>

userLoginService里面需要用到request的时候,直接使用HttpInvokerRequestContext .getRequest()就可以了

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值