dubbo参数校验和amp;统一异常转response处理
官方的参数校验方法
https://cn.dubbo.apache.org/zh-cn/docs/advanced/parameter-validation/
目标:能把参数校验异常、自定义异常转化为自定义的response结构。
目标A:增加统一异常处理:
可以把Fitler文件中定义的加入到<dubbo:provider filter="xxx"> 也可以直接用@Active
这样之后发现普通的抛出异常可以catch,但是参数校验的异常直接catch不到,原因大概是默认的参数校验filter在异常处理filter之前就返回了。
目标B:为了能把异常统一转化为response:
第一种方案:直接实现一个参数校验filter,在其中转换为response
Dubbo服务如何优雅的校验参数_51CTO博客_dubbo指定服务提供者
第二种方案:把官方的全局异常处理放到最前面
https://www.cnblogs.com/mumuxinfei/p/9231310.html
存在的问题有:
1)自定义异常会在dubbo自带的ExceptionFIlter中被转成runtimeException,见
https://blog.csdn.net/zidongxiangxi/article/details/108098173
2)validation异常会包在rpcException里面,见官方实例
因此只能采用方案一:自定义exceptionFilter取代自带的异常处理,也可以在dubbo自带的基础上增加转换response的逻辑
网上还看到自定义的fitler可以覆盖自带filter ,但是实测有问题:会走到ExtensionLoader的判重逻辑里面,报
Duplicate extension
参考阅读 使用dubbofiler实现日志调用链追踪
附:filter加载过程
1)ExtensionLoader.loadExtensionClasses
-
loadFile(extensionClasses, DUBBO_INTERNAL_DIRECTORY);
-
loadFile(extensionClasses, DUBBO_DIRECTORY);
-
loadFile(extensionClasses, SERVICES_DIRECTORY);
会读读取各个jar包和代码中的META-INF
先读内部的,再读外部的。最候用filter文件中的key value,放进
2)在getActivateExtension中,对每个接口去组装filter链
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgggbaa
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13