axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Amila Suriarachchi <amilasuriarach...@gmail.com>
Subject [Axis2] Child first class loading
Date Fri, 15 May 2009 14:14:54 GMT
hi all,

Currently Axis2 follows the parent first class loading for service and
module loading.

The reason for this is it uses DeploymentClassLoader loader which is
extended from the ClassLoader class.

The loadClass method of the ClassLoader class looks like this.

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) {
        try {
        if (parent != null) {
            c = parent.loadClass(name, false);
        } else {
            c = findBootstrapClass0(name);
        }
        } catch (ClassNotFoundException e) {
            // If still not found, then invoke findClass in order
            // to find the class.
            c = findClass(name);
        }
    }
    if (resolve) {
        resolveClass(c);
    }
    return c;
    }

it first check for parent class loader classes and then for its classes. So
we can add child first class loading simply reversing this order in a
override loadClass method as follows.

protected synchronized Class<?> loadClass(String name, boolean resolve)
throws ClassNotFoundException {

        Class c = findLoadedClass(name);
        if (c == null) {
            try {
                c = findClass(name);
            } catch (Exception e) {
                c = super.loadClass(name, resolve);
            }
        }
        return c;
    }

I have attach the patch here[1].

I tested this with a sample service and it worked fine. Will do some tests
with the modules as well.

I think this should be the default behaviour to axis2 since it allows people
to use their own classes at the service/module level.

Any thoughts?

thanks,
Amila.


[1] https://issues.apache.org/jira/browse/AXIS2-4349



-- 
Amila Suriarachchi
WSO2 Inc.
blog: http://amilachinthaka.blogspot.com/

Mime
View raw message