diff --git a/dubbo-samples-async/dubbo-samples-async-original-future/case-versions.conf b/dubbo-samples-async/dubbo-samples-async-original-future/case-versions.conf
index 0e26c8b..d718a9f 100644
--- a/dubbo-samples-async/dubbo-samples-async-original-future/case-versions.conf
+++ b/dubbo-samples-async/dubbo-samples-async-original-future/case-versions.conf
@@ -20,5 +20,5 @@
 # Supported component versions of the test case
 
 # Spring app
-dubbo.version=2.7*, 3.*
+dubbo.version=3.*
 spring.version=4.*, 5.*
diff --git a/dubbo-samples-async/dubbo-samples-async-original-future/src/main/java/org/apache/dubbo/samples/async/AsyncConsumer.java b/dubbo-samples-async/dubbo-samples-async-original-future/src/main/java/org/apache/dubbo/samples/async/AsyncConsumer.java
index 7d8f3c4..82d5d2c 100644
--- a/dubbo-samples-async/dubbo-samples-async-original-future/src/main/java/org/apache/dubbo/samples/async/AsyncConsumer.java
+++ b/dubbo-samples-async/dubbo-samples-async-original-future/src/main/java/org/apache/dubbo/samples/async/AsyncConsumer.java
@@ -40,10 +40,9 @@
         RpcContext.getContext().setAttachment("consumer-key1", "consumer-value1");
 
         CompletableFuture<String> future = asyncService.sayHello("async call request");
-        RpcContext savedServerContext = RpcContext.getServerContext();
         CountDownLatch latch = new CountDownLatch(1);
         future.whenComplete((v, t) -> {
-            System.out.println((String) savedServerContext.getAttachment("server-key1"));
+            System.out.println((String) RpcContext.getServerContext().getAttachment("server-key1"));
             if (t != null) {
                 logger.warn("Exception: ", t);
             } else {
diff --git a/dubbo-samples-async/dubbo-samples-async-original-future/src/main/java/org/apache/dubbo/samples/async/filter/LegacyListenableFilter.java b/dubbo-samples-async/dubbo-samples-async-original-future/src/main/java/org/apache/dubbo/samples/async/filter/LegacyListenableFilter.java
index 370feb2..f879ebf 100644
--- a/dubbo-samples-async/dubbo-samples-async-original-future/src/main/java/org/apache/dubbo/samples/async/filter/LegacyListenableFilter.java
+++ b/dubbo-samples-async/dubbo-samples-async-original-future/src/main/java/org/apache/dubbo/samples/async/filter/LegacyListenableFilter.java
@@ -44,7 +44,7 @@
         if (StringUtils.isEmpty(filters)) {
             filters = "";
         }
-        filters += " legacy-block-filter";
+        filters += " legacy-listenable-filter";
         context.setAttachment("filters", filters);
 
         return invoker.invoke(invocation);
diff --git a/dubbo-samples-async/dubbo-samples-async-original-future/src/main/java/org/apache/dubbo/samples/async/impl/AsyncServiceImpl.java b/dubbo-samples-async/dubbo-samples-async-original-future/src/main/java/org/apache/dubbo/samples/async/impl/AsyncServiceImpl.java
index c3e4395..f810277 100644
--- a/dubbo-samples-async/dubbo-samples-async-original-future/src/main/java/org/apache/dubbo/samples/async/impl/AsyncServiceImpl.java
+++ b/dubbo-samples-async/dubbo-samples-async-original-future/src/main/java/org/apache/dubbo/samples/async/impl/AsyncServiceImpl.java
@@ -19,7 +19,9 @@
 
 package org.apache.dubbo.samples.async.impl;
 
+import org.apache.dubbo.rpc.AsyncContext;
 import org.apache.dubbo.rpc.RpcContext;
+import org.apache.dubbo.rpc.RpcContextAttachment;
 import org.apache.dubbo.samples.async.api.AsyncService;
 
 import org.slf4j.Logger;
@@ -32,16 +34,20 @@
 
     @Override
     public CompletableFuture<String> sayHello(String name) {
-        RpcContext savedContext = RpcContext.getContext();
-        RpcContext savedServerContext = RpcContext.getServerContext();
+        // If attachments and context are going to be used in the new thread, startAsync() and signalContextSwitch() must be called.
+        // Otherwise, it is not necessary to call these two methods.
+        AsyncContext asyncContext = RpcContext.startAsync();
         return CompletableFuture.supplyAsync(() -> {
-            String received = (String) savedContext.getAttachment("consumer-key1");
+            asyncContext.signalContextSwitch();
+            RpcContextAttachment attachmentFromClient = RpcContext.getServerAttachment();
+            RpcContextAttachment attachmentToClient = RpcContext.getServerContext();
+            String received = (String) attachmentFromClient.getAttachment("consumer-key1");
             logger.info("consumer-key1 from attachment: " + received);
-            savedServerContext.setAttachment("server-key1", "server-" + received);
+            attachmentToClient.setAttachment("server-key1", "server-" + received);
 
-            received = (String) savedContext.getAttachment("filters");
+            received = (String) attachmentFromClient.getAttachment("filters");
             logger.info("filters from attachment: " + received);
-            savedServerContext.setAttachment("filters", received);
+            attachmentToClient.setAttachment("filters", received);
             try {
                 Thread.sleep(10000);
             } catch (InterruptedException e) {
