From 207ac5d7a568979cdfb5b9a44e9149d53d6fd3ed Mon Sep 17 00:00:00 2001 From: straybirdzls Date: Tue, 28 Aug 2018 15:13:12 +0800 Subject: [PATCH] fix throw object --- .../integration/invoke/DynamicJvmServiceProxyFinder.java | 3 +++ .../alipay/sofa/runtime/service/binding/JvmBindingAdapter.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/integration/invoke/DynamicJvmServiceProxyFinder.java b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/integration/invoke/DynamicJvmServiceProxyFinder.java index 80b939d39..7da86b25b 100644 --- a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/integration/invoke/DynamicJvmServiceProxyFinder.java +++ b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/integration/invoke/DynamicJvmServiceProxyFinder.java @@ -36,6 +36,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Collection; @@ -167,6 +168,8 @@ protected Object doInvoke(MethodInvocation invocation) throws Throwable { Object retVal = transformMethod.invoke(targetService, arguments); return hessianTransport(retVal, getClientClassloader()); + } catch (InvocationTargetException ex) { + throw ex.getTargetException(); } finally { setClientClassloader(null); } diff --git a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/binding/JvmBindingAdapter.java b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/binding/JvmBindingAdapter.java index ac7c60a01..a31b7ab00 100644 --- a/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/binding/JvmBindingAdapter.java +++ b/runtime-sofa-boot-starter/src/main/java/com/alipay/sofa/runtime/service/binding/JvmBindingAdapter.java @@ -124,7 +124,7 @@ private Object createServiceProxy(Contract contract, JvmBinding binding, factory.setProxyTargetClass(true); } factory.addAdvice(handler); - return factory.getProxy(); + return factory.getProxy(newClassLoader); } finally { Thread.currentThread().setContextClassLoader(oldClassLoader); }