Class ClientWrapperClassLoader

java.lang.Object
java.lang.ClassLoader
java.security.SecureClassLoader
java.net.URLClassLoader
org.apache.flink.util.MutableURLClassLoader
org.apache.flink.util.FlinkUserCodeClassLoaders.SafetyNetWrapperClassLoader
org.apache.flink.table.client.util.ClientWrapperClassLoader
All Implemented Interfaces:
Closeable, AutoCloseable

@Experimental @Internal public class ClientWrapperClassLoader extends org.apache.flink.util.FlinkUserCodeClassLoaders.SafetyNetWrapperClassLoader
This class loader extends FlinkUserCodeClassLoaders.SafetyNetWrapperClassLoader, upon the addURL method, it also exposes a removeURL method which used to remove unnecessary jar from current classloader path. This class loader wraps a FlinkUserCodeClassLoader and an old classloader list, the class load is delegated to the inner FlinkUserCodeClassLoader.

This is only used to SqlClient for supporting REMOVE JAR clause currently. When remove a jar, get the registered jar url list from current FlinkUserCodeClassLoader firstly, then create a new instance of FlinkUserCodeClassLoader which urls doesn't include the removed jar, and the currentClassLoader point to new instance object, the old object is added to list to be closed when close ClientWrapperClassLoader.

Note: This classloader is not guaranteed to actually remove class or resource, any classes or resources in the removed jar that are already loaded, are still accessible.

  • Constructor Details

    • ClientWrapperClassLoader

      public ClientWrapperClassLoader(org.apache.flink.util.FlinkUserCodeClassLoader inner, org.apache.flink.configuration.Configuration configuration)
  • Method Details

    • removeURL

      public void removeURL(URL url)
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class org.apache.flink.util.FlinkUserCodeClassLoaders.SafetyNetWrapperClassLoader