com.opensymphony.xwork2.util
Class ClassLoaderUtil

java.lang.Object
  extended by com.opensymphony.xwork2.util.ClassLoaderUtil

public class ClassLoaderUtil
extends java.lang.Object

This class is extremely useful for loading resources and classes in a fault tolerant manner that works across different applications servers. It has come out of many months of frustrating use of multiple application servers at Atlassian, please don't change things unless you're sure they're not going to break in one server or another! It was brought in from oscore trunk revision 147.

Version:
$Revision: 894090 $
Author:
$Author: martinc $

Constructor Summary
ClassLoaderUtil()
           
 
Method Summary
static java.net.URL getResource(java.lang.String resourceName, java.lang.Class callingClass)
          Load a given resource.
static java.io.InputStream getResourceAsStream(java.lang.String resourceName, java.lang.Class callingClass)
          This is a convenience method to load a resource as a stream.
static java.util.Iterator<java.net.URL> getResources(java.lang.String resourceName, java.lang.Class callingClass, boolean aggregate)
          Load all resources with a given name, potentially aggregating all results from the searched classloaders.
static java.lang.Class loadClass(java.lang.String className, java.lang.Class callingClass)
          Load a class with a given name.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ClassLoaderUtil

public ClassLoaderUtil()
Method Detail

getResources

public static java.util.Iterator<java.net.URL> getResources(java.lang.String resourceName,
                                                            java.lang.Class callingClass,
                                                            boolean aggregate)
                                                     throws java.io.IOException
Load all resources with a given name, potentially aggregating all results from the searched classloaders. If no results are found, the resource name is prepended by '/' and tried again. This method will try to load the resources using the following methods (in order):

Parameters:
resourceName - The name of the resources to load
callingClass - The Class object of the calling object
Throws:
java.io.IOException

getResource

public static java.net.URL getResource(java.lang.String resourceName,
                                       java.lang.Class callingClass)
Load a given resource. This method will try to load the resource using the following methods (in order):

Parameters:
resourceName - The name IllegalStateException("Unable to call ")of the resource to load
callingClass - The Class object of the calling object

getResourceAsStream

public static java.io.InputStream getResourceAsStream(java.lang.String resourceName,
                                                      java.lang.Class callingClass)
This is a convenience method to load a resource as a stream. The algorithm used to find the resource is given in getResource()

Parameters:
resourceName - The name of the resource to load
callingClass - The Class object of the calling object

loadClass

public static java.lang.Class loadClass(java.lang.String className,
                                        java.lang.Class callingClass)
                                 throws java.lang.ClassNotFoundException
Load a class with a given name. It will try to load the class in the following order:

Parameters:
className - The name of the class to load
callingClass - The Class object of the calling object
Throws:
java.lang.ClassNotFoundException - If the class cannot be found anywhere.


Copyright © 2000-2011 Apache Software Foundation. All Rights Reserved.