zoukankan      html  css  js  c++  java
  • Ehcache(2.9.x)

    About Class Loading

    Class loading, within the plethora of environments that Ehcache can be running, could be complex. But with Ehcache, all class loading is done in a standard way in one utility class: ClassLoaderUtil.

    Plugin Class Loading

    Ehcache allows plugins for events and distribution. These are loaded and created as follows:

    /** 
     * Creates a new class instance. Logs errors along the way. Classes are loaded 
     * using the Ehcache standard classloader. 
     * 
     * @param className a fully qualified class name 
     * @return null if the instance cannot be loaded 
     */ 
    public static Object createNewInstance(String className) throws CacheException { 
        Class clazz; 
        Object newInstance; 
        try { 
          clazz = Class.forName(className, true, getStandardClassLoader()); 
        } catch (ClassNotFoundException e) { 
          //try fallback 
          try { 
              clazz = Class.forName(className, true, getFallbackClassLoader()); 
          } catch (ClassNotFoundException ex) { 
              throw new CacheException("Unable to load class " + className + 
                         ". Initial cause was " + e.getMessage(), e); 
          } 
        } 
        try { 
          newInstance = clazz.newInstance(); 
        } catch (IllegalAccessException e) { 
          throw new CacheException("Unable to load class " + className + 
                     ". Initial cause was " + e.getMessage(), e); 
        } catch (InstantiationException e) { 
          throw new CacheException("Unable to load class " + className + 
                     ". Initial cause was " + e.getMessage(), e); 
        } 
        return newInstance; 
    } 
    /** 
     * Gets the ClassLoader that all classes in ehcache, and extensions, 
     * should use for classloading. All ClassLoading in Ehcache should use this 
     * one. This is the only thing that seems to work for all of the class 
     * loading situations found in the wild. 
     * @return the thread context class loader. 
     */ 
    public static ClassLoader getStandardClassLoader() { 
        return Thread.currentThread().getContextClassLoader(); 
    } 
    /** 
     * Gets a fallback ClassLoader that all classes in ehcache, and 
     * extensions, should use for classloading. This is used if the  
     * context class loader does not work. 
     * @return the ClassLoaderUtil.class.getClassLoader(); */ 
    public static ClassLoader getFallbackClassLoader() { 
        return ClassLoaderUtil.class.getClassLoader(); 
    }

    If this does not work for some reason, a CacheException is thrown with a detailed error message.

    Loading of ehcache.xml Resources

    If the configuration is otherwise unspecified, Ehcache looks for a configuration in the following order:

    • Thread.currentThread().getContextClassLoader().getResource("/ehcache.xml")
    • ConfigurationFactory.class.getResource("/ehcache.xml")
    • ConfigurationFactory.class.getResource("/ehcache-failsafe.xml")

    Ehcache uses the first configuration found. Note the use of “/ehcache.xml”, which requires that ehcache.xml be placed at the root of the classpath (i.e., not in any package).

  • 相关阅读:
    sl跨域访问学习笔记2
    XAML标记扩展
    充分利用资源,实践中创新
    程序集版本号与文件版本号的区别
    项目管理: 软件质量的可靠保证
    未能将临时文件复制到输出目录中
    IBM DB2 UDB V8.1®,Oracle9i R2®,Microsoft SQL Server 2000® 技术比较分析
    Asp.net 1.0 升级至 ASP.NET 2.0十个问题总结
    The remote procedure call failed and did not execute的解决办法
    快速解决IIS5故障一例
  • 原文地址:https://www.cnblogs.com/huey/p/5847310.html
Copyright © 2011-2022 走看看