diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml
index 910f41466..ed1484fdb 100644
--- a/yudao-dependencies/pom.xml
+++ b/yudao-dependencies/pom.xml
@@ -252,6 +252,11 @@
dubbo-cluster
${dubbo.version}
+
+ org.apache.dubbo
+ dubbo-rpc-api
+ ${dubbo.version}
+
cn.iocoder.cloud
yudao-spring-boot-starter-rpc
diff --git a/yudao-framework/yudao-spring-boot-starter-rpc/pom.xml b/yudao-framework/yudao-spring-boot-starter-rpc/pom.xml
index 5216178f6..f48f81665 100644
--- a/yudao-framework/yudao-spring-boot-starter-rpc/pom.xml
+++ b/yudao-framework/yudao-spring-boot-starter-rpc/pom.xml
@@ -38,10 +38,20 @@
org.apache.dubbo
dubbo-common
+
+ org.apache.dubbo
+ dubbo-rpc-api
+
+
+
+
+ jakarta.validation
+ jakarta.validation-api
+
diff --git a/归档/common/mall-spring-boot-starter-dubbo/src/main/java/cn/iocoder/mall/dubbo/core/filter/DubboProviderExceptionFilter.java b/yudao-framework/yudao-spring-boot-starter-rpc/src/main/java/cn/iocoder/yudao/framework/rpc/core/dubbo/DubboProviderExceptionFilter.java
similarity index 68%
rename from 归档/common/mall-spring-boot-starter-dubbo/src/main/java/cn/iocoder/mall/dubbo/core/filter/DubboProviderExceptionFilter.java
rename to yudao-framework/yudao-spring-boot-starter-rpc/src/main/java/cn/iocoder/yudao/framework/rpc/core/dubbo/DubboProviderExceptionFilter.java
index 4d5b7110c..69cc6072b 100644
--- a/归档/common/mall-spring-boot-starter-dubbo/src/main/java/cn/iocoder/mall/dubbo/core/filter/DubboProviderExceptionFilter.java
+++ b/yudao-framework/yudao-spring-boot-starter-rpc/src/main/java/cn/iocoder/yudao/framework/rpc/core/dubbo/DubboProviderExceptionFilter.java
@@ -1,28 +1,25 @@
-package cn.iocoder.mall.dubbo.core.filter;
+package cn.iocoder.yudao.framework.rpc.core.dubbo;
-import cn.iocoder.common.framework.exception.GlobalException;
-import cn.iocoder.common.framework.exception.ServiceException;
-import cn.iocoder.common.framework.util.ExceptionUtil;
-import cn.iocoder.common.framework.vo.CommonResult;
+import cn.hutool.core.exceptions.ExceptionUtil;
+import cn.iocoder.yudao.framework.common.exception.ServerException;
+import cn.iocoder.yudao.framework.common.exception.ServiceException;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.common.extension.Activate;
import org.apache.dubbo.rpc.*;
import org.apache.dubbo.rpc.service.GenericService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import java.lang.reflect.Type;
-import static cn.iocoder.common.framework.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST;
-import static cn.iocoder.common.framework.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR;
+import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.*;
@Activate(group = CommonConstants.PROVIDER) // TODO 优化点:设置下顺序
+@Slf4j
public class DubboProviderExceptionFilter implements Filter, Filter.Listener {
- private Logger logger = LoggerFactory.getLogger(DubboProviderExceptionFilter.class);
-
@Override
public Result invoke(Invoker> invoker, Invocation invocation) throws RpcException {
return invoker.invoke(invocation);
@@ -55,14 +52,14 @@ public class DubboProviderExceptionFilter implements Filter, Filter.Listener {
appResponse.setException(exception);
}
} catch (Throwable e) {
- logger.warn("Fail to ExceptionFilter when called by " + RpcContext.getContext().getRemoteHost() + ". service: " + invoker.getInterface().getName() + ", method: " + invocation.getMethodName() + ", exception: " + e.getClass().getName() + ": " + e.getMessage(), e);
+ log.warn("Fail to ExceptionFilter when called by " + RpcContext.getContext().getRemoteHost() + ". service: " + invoker.getInterface().getName() + ", method: " + invocation.getMethodName() + ", exception: " + e.getClass().getName() + ": " + e.getMessage(), e);
}
}
}
@Override
public void onError(Throwable e, Invoker> invoker, Invocation invocation) {
- logger.error("Got unchecked and undeclared exception which called by " + RpcContext.getContext().getRemoteHost() + ". service: " + invoker.getInterface().getName() + ", method: " + invocation.getMethodName() + ", exception: " + e.getClass().getName() + ": " + e.getMessage(), e);
+ log.error("Got unchecked and undeclared exception which called by " + RpcContext.getContext().getRemoteHost() + ". service: " + invoker.getInterface().getName() + ", method: " + invocation.getMethodName() + ", exception: " + e.getClass().getName() + ": " + e.getMessage(), e);
}
private boolean isReturnCommonResult(Invocation invocation) {
@@ -78,32 +75,31 @@ public class DubboProviderExceptionFilter implements Filter, Filter.Listener {
if (!(returnType instanceof Class)) {
return false;
}
- Class returnClass = (Class) returnType;
+ Class> returnClass = (Class>) returnType;
return returnClass == CommonResult.class;
}
/**
* 处理 Validator 校验不通过产生的异常
*/
- private GlobalException constraintViolationExceptionHandler(ConstraintViolationException ex) {
- logger.warn("[constraintViolationExceptionHandler]", ex);
+ private ServiceException constraintViolationExceptionHandler(ConstraintViolationException ex) {
+ log.warn("[constraintViolationExceptionHandler]", ex);
ConstraintViolation> constraintViolation = ex.getConstraintViolations().iterator().next();
- return new GlobalException(BAD_REQUEST.getCode(),
+ return new ServiceException(BAD_REQUEST.getCode(),
String.format("请求参数不正确:%s", constraintViolation.getMessage()));
}
/**
* 处理系统异常,兜底处理所有的一切
*/
- private GlobalException defaultExceptionHandler(Throwable exception, Invocation invocation) {
- logger.error("[defaultExceptionHandler][service({}) method({}) params({}) 执行异常]",
+ private ServerException defaultExceptionHandler(Throwable exception, Invocation invocation) {
+ log.error("[defaultExceptionHandler][service({}) method({}) params({}) 执行异常]",
invocation.getTargetServiceUniqueName(), invocation.getMethodName(), invocation.getArguments(), exception);
// 如果已经是 GlobalException 全局异常,直接返回即可
- if (exception instanceof GlobalException) {
- return (GlobalException) exception;
+ if (exception instanceof ServerException) {
+ return (ServerException) exception;
}
- return new GlobalException(INTERNAL_SERVER_ERROR)
- .setDetailMessage(this.buildDetailMessage(exception, invocation));
+ return new ServerException(INTERNAL_SERVER_ERROR).setMessage(this.buildDetailMessage(exception, invocation));
}
private String buildDetailMessage(Throwable exception, Invocation invocation) {
diff --git a/yudao-framework/yudao-spring-boot-starter-rpc/src/main/resources/META-INF/dubbo/com.alibaba.dubbo.rpc.Filter b/yudao-framework/yudao-spring-boot-starter-rpc/src/main/resources/META-INF/dubbo/com.alibaba.dubbo.rpc.Filter
new file mode 100644
index 000000000..20b1251b4
--- /dev/null
+++ b/yudao-framework/yudao-spring-boot-starter-rpc/src/main/resources/META-INF/dubbo/com.alibaba.dubbo.rpc.Filter
@@ -0,0 +1 @@
+dubboExceptionFilter=cn.iocoder.yudao.framework.rpc.core.dubbo.DubboProviderExceptionFilter
diff --git a/归档/common/mall-spring-boot-starter-dubbo/pom.xml b/归档/common/mall-spring-boot-starter-dubbo/pom.xml
deleted file mode 100644
index 31acd196e..000000000
--- a/归档/common/mall-spring-boot-starter-dubbo/pom.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-
- common
- cn.iocoder.mall
- 1.0-SNAPSHOT
-
- 4.0.0
-
- mall-spring-boot-starter-dubbo
-
-
-
-
- cn.iocoder.mall
- common-framework
-
-
-
-
- org.springframework.boot
- spring-boot-starter-web
- true
-
-
-
-
-
-
-
-
-
-
- org.apache.dubbo
- dubbo-spring-boot-starter
-
-
-
-
- org.slf4j
- slf4j-api
-
-
-
-
- javax.validation
- validation-api
-
-
-
-
diff --git a/归档/common/mall-spring-boot-starter-dubbo/src/main/resources/META-INF/dubbo/com.alibaba.dubbo.rpc.Filter b/归档/common/mall-spring-boot-starter-dubbo/src/main/resources/META-INF/dubbo/com.alibaba.dubbo.rpc.Filter
deleted file mode 100644
index f81a93f70..000000000
--- a/归档/common/mall-spring-boot-starter-dubbo/src/main/resources/META-INF/dubbo/com.alibaba.dubbo.rpc.Filter
+++ /dev/null
@@ -1,2 +0,0 @@
-dubboExceptionFilter=cn.iocoder.mall.dubbo.core.filter.DubboProviderExceptionFilter
-dubboProviderRouterTagFilter=cn.iocoder.mall.dubbo.core.filter.DubboProviderRouterTagFilter