用Arthas解决线上问题之获取请求(HttpServletRequest)
写在前面:写此篇文章意在用Arthas的ognl,所以不是最优的解决办法,故希望各位大神不要喷我。
前几天遇到这么一个问题:正式环境上一个接口请求,返回结果不是预期。
简化方法如下:
@RequestMapping("/test")
@ResponseBody
public String test() {
//获取cookie里的某个值,方法省略
String cookie = xxxx;
//调用service 处理cookie 返回一个结果
String result = xxxService.test(cookie);
return result ;
}
在没遇到Arthas的时候,我很可能直接加上log,重新发版来查看cookie的具体指
如果我们用Arthas的 watch 查看test 这个方法的入参和返回值的话解话也获得不了cookie的值,之前用Arthas只是简单的用watch,trace等简单的功能。借此次机会正好学习一下比较屌的ognl。
具体的命令:
watch -x 3 -n 1 org.springframework.web.servlet.DispatcherServlet doDispatch '@org.springframework.web.context.request.RequestContextHolder@currentRequestAttributes().getRequest().xxx()'
获取到HttpServletRequest之后,那你想获取相关请求的内容就太容易了,上面代码中的xxx各位就自由发挥吧。

本文介绍如何利用Arthas的高级功能OGNL获取线上请求的HttpServletRequest,以深入分析接口问题,避开传统日志排查的局限。
1575

被折叠的 条评论
为什么被折叠?



