diff --git a/dubbo-config/src/main/java/com/alibaba/dubbo/config/ServiceConfig.java b/dubbo-config/src/main/java/com/alibaba/dubbo/config/ServiceConfig.java index c7c00483c5318524ec53d9d1ff9165ccbcbb51bb..e970f060b66e89cd9ab62a10b193a90ab958b285 100644 --- a/dubbo-config/src/main/java/com/alibaba/dubbo/config/ServiceConfig.java +++ b/dubbo-config/src/main/java/com/alibaba/dubbo/config/ServiceConfig.java @@ -459,7 +459,21 @@ public class ServiceConfig extends AbstractServiceConfig { } public Class getInterfaceClass() { - return interfaceClass == null ? GenericService.class : interfaceClass; + if (interfaceClass != null) { + return interfaceClass; + } + if (ref instanceof GenericService) { + return GenericService.class; + } + try { + if (interfaceName != null && interfaceName.length() > 0) { + this.interfaceClass = Class.forName(interfaceName, true, Thread.currentThread() + .getContextClassLoader()); + } + } catch (ClassNotFoundException t) { + throw new IllegalStateException(t.getMessage(), t); + } + return interfaceClass; } /**