[ 
https://issues.apache.org/jira/browse/AXIS2-4349?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12717070#action_12717070
 ] 

Deepal Jayasinghe commented on AXIS2-4349:
------------------------------------------

go for it.

> 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.

Reply via email to