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

Reply via email to