axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Amila Chinthaka Suriarachchi (JIRA)" <j...@apache.org>
Subject [jira] Updated: (AXIS2-4349) Child first class loading
Date Mon, 18 May 2009 13:25:45 GMT

     [ https://issues.apache.org/jira/browse/AXIS2-4349?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Amila Chinthaka Suriarachchi updated AXIS2-4349:
------------------------------------------------

    Attachment: classloaderpatch.txt

attach a patch so that child first class loading can be set using axis2.xml parameter level.

> Child first class loading
> -------------------------
>
>                 Key: AXIS2-4349
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4349
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Improvement
>            Reporter: Amila Chinthaka Suriarachchi
>         Attachments: child_first_class_loading.patch, classloaderpatch.txt
>
>
> 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;
>     }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message