博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot dubbo统一异常处理
阅读量:4135 次
发布时间:2019-05-25

本文共 1926 字,大约阅读时间需要 6 分钟。

 dubbo服务中为了对外隐藏具体异常,给上游调用方更直接的返回提示,可以通过dubbo的Filter方式和SpringAop方式

dubbo的Filter方式如下:

1、实现过滤器

import com.alibaba.dubbo.common.Constants;import com.alibaba.dubbo.common.extension.Activate;import com.alibaba.dubbo.rpc.*;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.lang.reflect.Method;/** * dubbo 对外异常统一处理 * * @author awen */@Activate(group = Constants.PROVIDER)public class ExceptionFilter implements Filter {    private static final Logger logger = LoggerFactory.getLogger(ExceptionFilter.class);    @Override    public Result invoke(Invoker
invoker, Invocation invocation) throws RpcException { Result result = null; try { result = invoker.invoke(invocation); Method method = invoker.getInterface().getMethod(invocation.getMethodName(), invocation.getParameterTypes()); Class returnType = method.getReturnType(); if (result.hasException()) { Throwable throwable = result.getException(); if (returnType.getName().equals("com.liwen.domain.Result")) { com.liwen.domain.Result myResult; if (throwable instanceof com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException) { myResult = ResultUtils.wrapFailure(0, "重复操作"); } else { myResult = ResultUtils.wrapFailure(1, "系统错误"); } logger.error("服务异常 myResult=" + myResult, result); return new RpcResult(myResult); } } } catch (Exception e) { logger.error("统一捕捉异常失败", e); } return result; }}

2、在resources目录下添加纯文本文件META-INF/dubbo/com.alibaba.dubbo.rpc.Filter,内容如下:

   exceptionFilter=com.liwen.filter.ExceptionFilter
 
3、修改dubbo的provider配置文件,在dubbo:provider中添加配置的filter,如下:
     <dubbo:provider filter="exceptionFilter"></dubbo:provider>

 

aop参考:

转载地址:http://chsvi.baihongyu.com/

你可能感兴趣的文章
从一列数中筛除尽可能少的数,使得从左往右看这些数是从小到大再从大到小...
查看>>
判断一个整数是否是回文数
查看>>
经典shell面试题整理
查看>>
腾讯的一道面试题—不用除法求数字乘积
查看>>
素数算法
查看>>
java多线程环境单例模式实现详解
查看>>
将一个数插入到有序的数列中,插入后的数列仍然有序
查看>>
在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出no found
查看>>
万年历
查看>>
作为码农你希望面试官当场指出你错误么?有面试官这样遭到投诉!
查看>>
好多程序员都认为写ppt是很虚的技能,可事实真的是这样么?
查看>>
如果按照代码行数发薪水会怎样?码农:我能刷到公司破产!
查看>>
程序员失误造成服务停用3小时,只得到半月辞退补偿,发帖喊冤
查看>>
码农:很多人称我“技术”,感觉这是不尊重!纠正无果后果断辞职
查看>>
php程序员看过来,这老外是在吐糟你吗?看看你中了几点!
查看>>
为什么说程序员是“培训班出来的”就是鄙视呢?
查看>>
码农吐糟同事:写代码低调点不行么?空格回车键与你有仇吗?
查看>>
阿里p8程序员四年提交6000次代码的确有功,但一次错误让人唏嘘!
查看>>
一道技术问题引起的遐想,最后得出结论技术的本质是多么的朴实!
查看>>
985硕士:非科班自学编程感觉还不如培训班出来的,硕士白读了?
查看>>