KOCA版本 :3.2
KOCA模块 :koca-bex
模块版本 :3.2
场景 :希望在bex执行分发时进行拦截操作,需要从bex请求的公参中获取用户信息
问题 : 获取信息时发现BexHelper中的公参为空,报空指针异常
报错细节 :
在业务部门有同学遇到了这个问题,于是我到现场支持了一次。
初步判断,可能是拦截操作在BexHelper的数据初始化之前了。
然后进行debug分析。
在debug模式下,进入ApiServiceFacade类。如果不是源码的话就下载源码(download source),koca的所有源代码都已上传到私库!
找到其中的deBex方法,在这方法内部进行了BexHelper的初始化操作。
打断点,重新调用…
结果发现在执行拦截的逻辑之前,先到了断点这,说明拦截操作确实是在BexHelper的初始化之后。
继续分析,考虑是否是请求有问题。
于是有了以下问答:
“这请求哪来的?” “Postman发的。”
“要去的是用户信息啊?” “对。”
“认证做了没?” “啊,用配置跳过了。”
看了下,确实在配置中手动把调用的接口跳过了。
猜测是跳过了认证这一步,所以没取到用户信息。
把配置去掉,重新开启认证。用客户端正常走登录认证再调用,发现没有空指针了。
所以BexHelper确实空指针的问题,但大多数时候和它没有关系,请从其他方面进行排查!