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

Andreas Veithen updated AXIS2-4520:
-----------------------------------

    Priority: Minor  (was: Blocker)

The Javadoc of the Thread class says this about the getContextClassLoader:

"Returns the context ClassLoader for this Thread. The context ClassLoader is 
provided by the creator of the thread for use by code running in this thread 
when loading classes and resources. If not set, the default is the ClassLoader 
context of the parent Thread. The context ClassLoader of the primordial thread 
is typically set to the class loader used to load the application."

It is true that this method may return null. On the other hand, in all usual 
runtime environments (simple Java app, J2EE, etc.) the context classloader is 
always set. The probability that you will be able to run any larger application 
(that uses some existing frameworks to do its job) in an environment where the 
context classloader is not set is close to zero. Even if we add the null check 
in DeploymentEngine, you will probably get the issue somewhere else. Therefore 
I would stronlgy recommend that you set up the context classloader as expected 
by most frameworks.

I decreased the priority of this issue because:
- it only appears in highly unusual application setups;
- there is an easy workaround, which is to set up the context classloader 
before giving control to Axis2.

> org.apache.axis2.deployment.DeploymentEngine cannot run under JNI
> -----------------------------------------------------------------
>
>                 Key: AXIS2-4520
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4520
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 1.5
>         Environment: Windows Server 2003, Java 1.5_14
>            Reporter: Per Agerbæk
>            Priority: Minor
>
> When running in a thread created by JNI the 
> Thread.currentThread().getContextClassLoader() return null, which in turn 
> gives this
> Caused by: java.lang.RuntimeException: parent[0] is null
>       at 
> org.apache.axis2.classloader.MultiParentClassLoader.copyParents(MultiParentClassLoader.java:182)
>       at 
> org.apache.axis2.classloader.MultiParentClassLoader.<init>(MultiParentClassLoader.java:105)
>       at 
> org.apache.axis2.classloader.MultiParentClassLoader.<init>(MultiParentClassLoader.java:76)
>       at 
> org.apache.axis2.classloader.JarFileClassLoader.<init>(JarFileClassLoader.java:66)
>       at org.apache.axis2.deployment.util.Utils$6.run(Utils.java:348)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at org.apache.axis2.deployment.util.Utils.getClassLoader(Utils.java:344)
>       at org.apache.axis2.deployment.util.Utils.getClassLoader(Utils.java:309)
>       at 
> org.apache.axis2.deployment.DeploymentEngine.setClassLoaders(DeploymentEngine.java:863)
>       at 
> org.apache.axis2.deployment.DeploymentEngine.loadRepository(DeploymentEngine.java:146)
>       at 
> org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:133)
>       at 
> org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:64)
>       at 
> org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:206)
> I fixed it by changing lines 863 - 866 in 
> modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java
>         ClassLoader sysClassLoader =
>                 
> Utils.getClassLoader(Thread.currentThread().getContextClassLoader(), 
> axis2repoURI, false);
>         axisConfig.setSystemClassLoader(sysClassLoader);
> by
>         ClassLoader classLoader = 
> Thread.currentThread().getContextClassLoader();
>         if (classLoader == null)
>             classLoader = ClassLoader.getSystemClassLoader();
>             
>         ClassLoader sysClassLoader = Utils.getClassLoader(classLoader, 
> axis2repoURI);

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