diff --git a/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleDefine.java b/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleDefine.java index 301cc8bd43840d9885cb09bb90fa4b2854cda28d..8aaa75c14571c67800cd096da98f32ae5be4fbf8 100644 --- a/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleDefine.java +++ b/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleDefine.java @@ -58,9 +58,8 @@ public abstract class ModuleDefine implements ModuleProviderHolder { * @param configuration of this module * @throws ProviderNotFoundException when even don't find a single one providers. */ - void prepare(ModuleManager moduleManager, - ApplicationConfiguration.ModuleConfiguration configuration) throws ProviderNotFoundException, ServiceNotProvidedException, ModuleConfigException, ModuleStartException { - ServiceLoader moduleProviderLoader = ServiceLoader.load(ModuleProvider.class); + void prepare(ModuleManager moduleManager, ApplicationConfiguration.ModuleConfiguration configuration, + ServiceLoader moduleProviderLoader) throws ProviderNotFoundException, ServiceNotProvidedException, ModuleConfigException, ModuleStartException { boolean providerExist = false; for (ModuleProvider provider : moduleProviderLoader) { if (!configuration.has(provider.name())) { diff --git a/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleManager.java b/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleManager.java index 90cf325408e08cbb113185289478d4fbce04c8e5..33b1b00b3e7dc27d9c6369d26f1d32385b2a7489 100644 --- a/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleManager.java +++ b/oap-server/server-library/library-module/src/main/java/org/apache/skywalking/oap/server/library/module/ModuleManager.java @@ -37,6 +37,8 @@ public class ModuleManager implements ModuleDefineHolder { ApplicationConfiguration applicationConfiguration) throws ModuleNotFoundException, ProviderNotFoundException, ServiceNotProvidedException, CycleDependencyException, ModuleConfigException, ModuleStartException { String[] moduleNames = applicationConfiguration.moduleList(); ServiceLoader moduleServiceLoader = ServiceLoader.load(ModuleDefine.class); + ServiceLoader moduleProviderLoader = ServiceLoader.load(ModuleProvider.class); + LinkedList moduleList = new LinkedList<>(Arrays.asList(moduleNames)); for (ModuleDefine module : moduleServiceLoader) { for (String moduleName : moduleNames) { @@ -47,7 +49,7 @@ public class ModuleManager implements ModuleDefineHolder { } catch (InstantiationException | IllegalAccessException e) { throw new ModuleNotFoundException(e); } - newInstance.prepare(this, applicationConfiguration.getModuleConfiguration(moduleName)); + newInstance.prepare(this, applicationConfiguration.getModuleConfiguration(moduleName), moduleProviderLoader); loadedModules.put(moduleName, newInstance); moduleList.remove(moduleName); }