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); }