API Overview API Index Package Overview Direct link to this page
JavaOnTracks 0.1.2
  net.jot.web.server.impl.webapp. JOTWebappClassLoader View Javadoc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package net.jot.web.server.impl.webapp;

import java.net.URL;
import java.net.URLClassLoader;
import net.jot.logger.JOTLogger;
import net.jot.logger.JOTLoggerLocation;

/**
 * WebApp Classloader
 * Each webapp wil have it's own classloader.
 * Classes are looked up in this order:
 * - [jotserver]/webapp/WEB-INF/classes/ *.class
 * - [jotserver]/webapp/WEB-INF/lib/ *.jar
 * - Java classloader (java & classpath)
 * - [jotserver]/common/classes/ *.class
 * - [jotserver]/common/lib/ *.jar
 * @author thibautc
 */
public class JOTWebappClassLoader extends URLClassLoader
{
    private JOTLoggerLocation loc=new JOTLoggerLocation(JOTLogger.CAT_SERVER,getClass());
    /**
     * Parent is JOTCommonClassLoader
     * @param parent
     */
    public JOTWebappClassLoader(URL[] urls, ClassLoader parent)
    {
        super(urls, parent);
    }

    /**
     * [ovveride]
     * We look in webapp jars first, this does NOT follow the classloader spec (delegation)
     * Then Delegate to java std classloader
     * Then we look in the "common" appserver folders
     */
    protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException
    {
        // First, check if the class has already been loaded
        Class c = findLoadedClass(name);
        if (c == null)
        {
            c = findClass(name);
            if (c == null)
            {
                c = loadClass(name, resolve);
            }
        }
        if(c!=null)
            loc.trace("Loaded class: "+name);
        return c;
    }
}

Generated By: JavaOnTracks Doclet 0.1.5     ©Thibaut Colar