From be2af1410456d350f36d733f52fbd833dfe951b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=AD=E5=A6=82?= <8775@163.com> Date: Thu, 13 Mar 2025 00:02:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96dubbo=20filter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sop-support/sop-service-support/pom.xml | 5 --- .../sop/support/context/OpenContext.java | 4 +-- .../gitee/sop/support/context/WebContext.java | 4 +-- .../dubbo/SopPenetrateAttachmentSelector.java | 34 +++++++++++++++++++ ...chmentSelector.PenetrateAttachmentSelector | 1 + 5 files changed, 37 insertions(+), 11 deletions(-) create mode 100644 sop-support/sop-service-support/src/main/java/com/gitee/sop/support/dubbo/SopPenetrateAttachmentSelector.java create mode 100644 sop-support/sop-service-support/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.PenetrateAttachmentSelector.PenetrateAttachmentSelector diff --git a/sop-support/sop-service-support/pom.xml b/sop-support/sop-service-support/pom.xml index 91dbfd49..878df406 100755 --- a/sop-support/sop-service-support/pom.xml +++ b/sop-support/sop-service-support/pom.xml @@ -15,11 +15,6 @@ - - com.alibaba - transmittable-thread-local - 2.14.5 - org.apache.dubbo dubbo diff --git a/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/OpenContext.java b/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/OpenContext.java index ced300d0..2b7b5185 100755 --- a/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/OpenContext.java +++ b/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/OpenContext.java @@ -1,7 +1,5 @@ package com.gitee.sop.support.context; -import com.alibaba.ttl.TransmittableThreadLocal; - import java.util.Locale; /** @@ -9,7 +7,7 @@ import java.util.Locale; */ public abstract class OpenContext { - private static final ThreadLocal THREAD_LOCAL = new TransmittableThreadLocal<>(); + private static final ThreadLocal THREAD_LOCAL = new InheritableThreadLocal<>(); /** * 获取appId diff --git a/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/WebContext.java b/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/WebContext.java index f818f4f6..e0ec4e42 100644 --- a/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/WebContext.java +++ b/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/context/WebContext.java @@ -1,7 +1,5 @@ package com.gitee.sop.support.context; -import com.alibaba.ttl.TransmittableThreadLocal; - import java.util.List; import java.util.Locale; import java.util.Map; @@ -11,7 +9,7 @@ import java.util.Map; */ public abstract class WebContext { - private static final ThreadLocal THREAD_LOCAL = new TransmittableThreadLocal<>(); + private static final ThreadLocal THREAD_LOCAL = new InheritableThreadLocal<>(); public abstract String getMethod(); diff --git a/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/dubbo/SopPenetrateAttachmentSelector.java b/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/dubbo/SopPenetrateAttachmentSelector.java new file mode 100644 index 00000000..404d0bd8 --- /dev/null +++ b/sop-support/sop-service-support/src/main/java/com/gitee/sop/support/dubbo/SopPenetrateAttachmentSelector.java @@ -0,0 +1,34 @@ +package com.gitee.sop.support.dubbo; + +import com.gitee.sop.support.constant.SopConstants; +import org.apache.dubbo.rpc.Invocation; +import org.apache.dubbo.rpc.PenetrateAttachmentSelector; +import org.apache.dubbo.rpc.RpcContextAttachment; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +/** + * @author 六如 + */ +public class SopPenetrateAttachmentSelector implements PenetrateAttachmentSelector { + @Override + public Map select(Invocation invocation, RpcContextAttachment clientAttachment, RpcContextAttachment serverAttachment) { + Map map = new HashMap<>(4); + Object openContext = serverAttachment.getObjectAttachment(SopConstants.OPEN_CONTEXT); + if (openContext != null) { + map.put(SopConstants.OPEN_CONTEXT, openContext); + } + Object webContext = serverAttachment.getObjectAttachment(SopConstants.WEB_CONTEXT); + if (webContext != null) { + map.put(SopConstants.WEB_CONTEXT, webContext); + } + return map; + } + + @Override + public Map selectReverse(Invocation invocation, RpcContextAttachment clientResponseContext, RpcContextAttachment serverResponseContext) { + return Collections.emptyMap(); + } +} diff --git a/sop-support/sop-service-support/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.PenetrateAttachmentSelector.PenetrateAttachmentSelector b/sop-support/sop-service-support/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.PenetrateAttachmentSelector.PenetrateAttachmentSelector new file mode 100644 index 00000000..db86c3c3 --- /dev/null +++ b/sop-support/sop-service-support/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.PenetrateAttachmentSelector.PenetrateAttachmentSelector @@ -0,0 +1 @@ +sopPenetrateAttachmentSelector=com.gitee.sop.support.dubbo.SopPenetrateAttachmentSelector