From e5f309a322b850db172e3f93eb657aa2ee013235 Mon Sep 17 00:00:00 2001 From: viper <38645977+xiaochangbai@users.noreply.github.com> Date: Sun, 23 Jan 2022 16:58:52 +0800 Subject: [PATCH] fix hessian2 deserialize fail (#9533) (#9536) * fix hessian2 deserialize fail (#9533) * refactor: Delete redundant import items --- .../main/java/org/apache/dubbo/demo/GreeterService.java | 6 ++++++ .../java/org/apache/dubbo/demo/GreeterServiceImpl.java | 7 +++++++ .../java/org/apache/dubbo/demo/consumer/ApiConsumer.java | 4 ++++ .../common/serialize/DefaultMultipleSerialization.java | 4 +--- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterService.java b/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterService.java index ae1a1c9d22..40492a31b2 100644 --- a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterService.java +++ b/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterService.java @@ -19,10 +19,16 @@ package org.apache.dubbo.demo; import org.apache.dubbo.demo.hello.HelloReply; import org.apache.dubbo.demo.hello.HelloRequest; +import java.util.concurrent.CompletableFuture; + public interface GreeterService { /** * Sends a greeting */ HelloReply sayHello(HelloRequest request); + + + CompletableFuture sayHelloAsync(String request); + } diff --git a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterServiceImpl.java b/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterServiceImpl.java index 825dd7a5e6..284afef739 100644 --- a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterServiceImpl.java +++ b/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterServiceImpl.java @@ -19,6 +19,8 @@ package org.apache.dubbo.demo; import org.apache.dubbo.demo.hello.HelloReply; import org.apache.dubbo.demo.hello.HelloRequest; +import java.util.concurrent.CompletableFuture; + public class GreeterServiceImpl implements GreeterService { @Override @@ -27,4 +29,9 @@ public class GreeterServiceImpl implements GreeterService { .setMessage("Hello " + request.getName()) .build(); } + + @Override + public CompletableFuture sayHelloAsync(String name) { + return CompletableFuture.supplyAsync(() -> name); + } } diff --git a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/consumer/ApiConsumer.java b/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/consumer/ApiConsumer.java index 61af87cdbb..6f44f06f89 100644 --- a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/consumer/ApiConsumer.java +++ b/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/consumer/ApiConsumer.java @@ -27,6 +27,7 @@ import org.apache.dubbo.demo.hello.HelloReply; import org.apache.dubbo.demo.hello.HelloRequest; import java.io.IOException; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; public class ApiConsumer { @@ -53,6 +54,9 @@ public class ApiConsumer { .build()); TimeUnit.SECONDS.sleep(1); System.out.println("Reply: " + reply.getMessage()); + + CompletableFuture sayHelloAsync = greeterService.sayHelloAsync("triple"); + System.out.println("Async Reply: "+sayHelloAsync.get()); } catch (Throwable t) { t.printStackTrace(); } diff --git a/dubbo-serialization/dubbo-serialization-api/src/main/java/org/apache/dubbo/common/serialize/DefaultMultipleSerialization.java b/dubbo-serialization/dubbo-serialization-api/src/main/java/org/apache/dubbo/common/serialize/DefaultMultipleSerialization.java index ad7cd97c90..8b433bbff3 100644 --- a/dubbo-serialization/dubbo-serialization-api/src/main/java/org/apache/dubbo/common/serialize/DefaultMultipleSerialization.java +++ b/dubbo-serialization/dubbo-serialization-api/src/main/java/org/apache/dubbo/common/serialize/DefaultMultipleSerialization.java @@ -18,7 +18,6 @@ package org.apache.dubbo.common.serialize; import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.utils.ClassUtils; import java.io.IOException; import java.io.InputStream; @@ -39,9 +38,8 @@ public class DefaultMultipleSerialization implements MultipleSerialization { public Object deserialize(URL url, String serializeType, String clz, InputStream os) throws IOException, ClassNotFoundException { serializeType = convertHessian(serializeType); final Serialization serialization = url.getOrDefaultFrameworkModel().getExtensionLoader(Serialization.class).getExtension(serializeType); - final Class aClass = ClassUtils.forName(clz); final ObjectInput in = serialization.deserialize(null, os); - return in.readObject(aClass); + return in.readObject(); } private String convertHessian(String ser) {