DeploymentClassloader unable to access resources from parent classloader
------------------------------------------------------------------------
Key: AXIS2-2679
URL: https://issues.apache.org/jira/browse/AXIS2-2679
Project: Axis 2.0 (Axis2)
Issue Type: Bug
Components: kernel
Affects Versions: 1.2
Reporter: Alex G
The following code does not work:
AxisService serv = <GET SERVICE SOMEHOW>
_log.debug("DEPLOYED SERVICE: " + serv.getName());
_log.info("************* SPRING LOAD *****************");
ClassPathXmlApplicationContext appContext = new
ClassPathXmlApplicationContext(
new String[] { "/META-INF/spring/web-components.xml" },
false,
parentContext);
appContext.setClassLoader(serv.getClassLoader());
appContext.refresh();
It complains about missing schemas (since web-components.xml is using spring
schemas).
I tracked the problem down to Axis2 DeploymentClassloader and discovered that
this classloader would not load any resource that is located in the parent
classloader dues to the following code:
public InputStream getResourceAsStream(String name) {
URL url =findResource(name);
if(url!=null){
try {
return url.openStream();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return null;
}
Acoording to J2SE API spec (in my interpretaion), first line should be
URL url =getResource(name); and not URL url =findResource(name);
Changing findResource to getResource - fixes the problem.
Formal diff:
====
modules/kernel/src/org/apache/axis2/deployment/DeploymentClassLoader.java#1 -
modules/kernel/src/org/apache/axis2/deployment/DeploymentClassLoader.java
====252c252
< URL url =findResource(name);
---
> URL url =getResource(name);
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]