Class YURLClassLoader

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable
    Direct Known Subclasses:
    PlatformInPlaceClassLoader

    public class YURLClassLoader
    extends java.net.URLClassLoader
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      protected static class  YURLClassLoader.TYPE  
    • Constructor Summary

      Constructors 
      Constructor Description
      YURLClassLoader​(java.net.URL[] urls)  
      YURLClassLoader​(java.net.URL[] urls, java.lang.ClassLoader parent)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void addClassPathURLs​(java.util.List<java.net.URL> urls, java.lang.String classpath)  
      protected java.net.URL buildURL​(java.io.File f, YURLClassLoader.TYPE type)  
      void clearAllReferences()
      Null out any static or final fields from loaded classes, as a workaround for apparent garbage collection bugs
      protected java.lang.Class<?> findClass​(java.lang.String name)  
      java.net.URL findResource​(java.lang.String name)  
      protected java.lang.Class<?> loadClass​(java.lang.String name, boolean resolve)
      overridden to maintain a list of classes that are loaded by this (or a child) Classloader to be able to clear references of this classes (during stop() ) In addition to that we hold a list of ALL loaded classes as a cache.
      void start()  
      void stop()
      Stops this classloader.
      • Methods inherited from class java.net.URLClassLoader

        addURL, close, definePackage, findResources, getPermissions, getResourceAsStream, getURLs, newInstance, newInstance
      • Methods inherited from class java.security.SecureClassLoader

        defineClass, defineClass
      • Methods inherited from class java.lang.ClassLoader

        clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • YURLClassLoader

        public YURLClassLoader​(java.net.URL[] urls)
      • YURLClassLoader

        public YURLClassLoader​(java.net.URL[] urls,
                               java.lang.ClassLoader parent)
    • Method Detail

      • findClass

        protected java.lang.Class<?> findClass​(java.lang.String name)
                                        throws java.lang.ClassNotFoundException
        Overrides:
        findClass in class java.net.URLClassLoader
        Throws:
        java.lang.ClassNotFoundException
      • loadClass

        protected java.lang.Class<?> loadClass​(java.lang.String name,
                                               boolean resolve)
                                        throws java.lang.ClassNotFoundException
        overridden to maintain a list of classes that are loaded by this (or a child) Classloader to be able to clear references of this classes (during stop() ) In addition to that we hold a list of ALL loaded classes as a cache.
        Overrides:
        loadClass in class java.lang.ClassLoader
        Throws:
        java.lang.ClassNotFoundException
      • findResource

        public java.net.URL findResource​(java.lang.String name)
        Overrides:
        findResource in class java.net.URLClassLoader
      • start

        public void start()
      • stop

        public void stop()
        Stops this classloader. this will "stop" the underlaying platform which means that
      • the connection pools are closed
      • all timer tasks stopped (if cronjob extension is installed)
      • the cache is cleared
      • all fields of static classes are nulled (due to GC problems)