Class ExtensionLoader<T>

java.lang.Object
org.apache.dubbo.common.extension.ExtensionLoader<T>

public class ExtensionLoader<T> extends Object
ApplicationModel, DubboBootstrap and this class are at present designed to be singleton or static (by itself totally static or uses some static fields). So the instances returned from them are of process or classloader scope. If you want to support multiple dubbo servers in a single process, you may need to refactor these three classes.

Load dubbo extensions

  • auto inject dependency extension
  • auto wrap extension in wrapper
  • default extension is an adaptive instance
See Also:
  • Method Details

    • setLoadingStrategies

      public static void setLoadingStrategies(LoadingStrategy... strategies)
    • getLoadingStrategies

      public static List<LoadingStrategy> getLoadingStrategies()
      Returns:
      non-null
      Since:
      2.7.7
      See Also:
    • getExtensionLoader

      @Deprecated public static <T> ExtensionLoader<T> getExtensionLoader(Class<T> type)
      Deprecated.
      get extension loader from extension director of some module.
      See Also:
    • resetExtensionLoader

      @Deprecated public static void resetExtensionLoader(Class type)
      Deprecated.
    • destroy

      public void destroy()
    • getExtensionName

      public String getExtensionName(T extensionInstance)
    • getExtensionName

      public String getExtensionName(Class<?> extensionClass)
    • getActivateExtension

      public List<T> getActivateExtension(URL url, String key)
      This is equivalent to getActivateExtension(url, key, null)
      Parameters:
      url - url
      key - url parameter key which used to get extension point names
      Returns:
      extension list which are activated.
      See Also:
    • getActivateExtension

      public List<T> getActivateExtension(URL url, String[] values)
      This is equivalent to getActivateExtension(url, values, null)
      Parameters:
      url - url
      values - extension point names
      Returns:
      extension list which are activated
      See Also:
    • getActivateExtension

      public List<T> getActivateExtension(URL url, String key, String group)
      This is equivalent to getActivateExtension(url, url.getParameter(key).split(","), null)
      Parameters:
      url - url
      key - url parameter key which used to get extension point names
      group - group
      Returns:
      extension list which are activated.
      See Also:
    • getActivateExtension

      public List<T> getActivateExtension(URL url, String[] values, String group)
      Get activate extensions.
      Parameters:
      url - url
      values - extension point names
      group - group
      Returns:
      extension list which are activated
      See Also:
    • getActivateExtensions

      public List<T> getActivateExtensions()
    • getLoadedExtension

      public T getLoadedExtension(String name)
      Get extension's instance. Return null if extension is not found or is not initialized. Pls. note that this method will not trigger extension load.

      In order to trigger extension load, call getExtension(String) instead.

      See Also:
    • getLoadedExtensions

      public Set<String> getLoadedExtensions()
      Return the list of extensions which are already loaded.

      Usually getSupportedExtensions() should be called in order to get all extensions.

      See Also:
    • getLoadedExtensionInstances

      public List<T> getLoadedExtensionInstances()
    • getExtension

      public T getExtension(String name)
      Find the extension with the given name.
      Throws:
      IllegalStateException - If the specified extension is not found.
    • getExtension

      public T getExtension(String name, boolean wrap)
    • getOrDefaultExtension

      public T getOrDefaultExtension(String name)
      Get the extension by specified name if found, or returns the default one
      Parameters:
      name - the name of extension
      Returns:
      non-null
    • getDefaultExtension

      public T getDefaultExtension()
      Return default extension, return null if it's not configured.
    • hasExtension

      public boolean hasExtension(String name)
    • getSupportedExtensions

      public Set<String> getSupportedExtensions()
    • getSupportedExtensionInstances

      public Set<T> getSupportedExtensionInstances()
    • getDefaultExtensionName

      public String getDefaultExtensionName()
      Return default extension name, return null if not configured.
    • addExtension

      public void addExtension(String name, Class<?> clazz)
      Register new extension via API
      Parameters:
      name - extension name
      clazz - extension class
      Throws:
      IllegalStateException - when extension with the same name has already been registered.
    • replaceExtension

      @Deprecated public void replaceExtension(String name, Class<?> clazz)
      Deprecated.
      not recommended any longer, and use only when test
      Replace the existing extension via API
      Parameters:
      name - extension name
      clazz - extension class
      Throws:
      IllegalStateException - when extension to be placed doesn't exist
    • getAdaptiveExtension

      public T getAdaptiveExtension()
    • toString

      public String toString()
      Overrides:
      toString in class Object