This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 5e7063d Change the way to get classloader in ClassLoaderFilter (#9472)
5e7063d is described below
commit 5e7063d17bf8dfa0ee4b0cba149ff9b9578bb479
Author: Albumen Kevin <[email protected]>
AuthorDate: Thu Dec 23 14:48:09 2021 +0800
Change the way to get classloader in ClassLoaderFilter (#9472)
* Change the way to get classloader in ClassLoaderFilter
* Fix ut
---
.../src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderFilter.java | 2 +-
.../test/java/org/apache/dubbo/rpc/filter/ClassLoaderFilterTest.java | 4 ++++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderFilter.java
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderFilter.java
index c71e2d1..c8e51fd 100644
---
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderFilter.java
+++
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderFilter.java
@@ -33,7 +33,7 @@ public class ClassLoaderFilter implements Filter {
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws
RpcException {
ClassLoader ocl = Thread.currentThread().getContextClassLoader();
-
Thread.currentThread().setContextClassLoader(invoker.getInterface().getClassLoader());
+
Thread.currentThread().setContextClassLoader(invocation.getServiceModel().getClassLoader());
try {
return invoker.invoke(invocation);
} finally {
diff --git
a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ClassLoaderFilterTest.java
b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ClassLoaderFilterTest.java
index f75f4ab..4bbcedf 100644
---
a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ClassLoaderFilterTest.java
+++
b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ClassLoaderFilterTest.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.rpc.Invocation;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Result;
import org.apache.dubbo.rpc.RpcException;
+import org.apache.dubbo.rpc.model.ServiceModel;
import org.apache.dubbo.rpc.support.DemoService;
import org.apache.dubbo.rpc.support.MyInvoker;
@@ -64,6 +65,9 @@ public class ClassLoaderFilterTest {
}
};
Invocation invocation = Mockito.mock(Invocation.class);
+ ServiceModel serviceModel = Mockito.mock(ServiceModel.class);
+ Mockito.when(serviceModel.getClassLoader()).thenReturn(cl);
+ Mockito.when(invocation.getServiceModel()).thenReturn(serviceModel);
classLoaderFilter.invoke(invoker, invocation);
}