Amila, Can you fix the typo in the value of the ENABLE_CHILD_FIRST_CLASS_LOADING constant? (there is an "i" missing)
Andreas On Wed, May 20, 2009 at 07:12, <ami...@apache.org> wrote: > Author: amilas > Date: Wed May 20 05:12:58 2009 > New Revision: 776555 > > URL: http://svn.apache.org/viewvc?rev=776555&view=rev > Log: > applied the patch for AXIS2-4349 > > Modified: > > webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/framework/JAXWSDeployer.java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentClassLoader.java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleDeployer.java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/POJODeployer.java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceDeployer.java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/TransportDeployer.java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/DeploymentFileData.java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisDescription.java > > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java > > Modified: > webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/framework/JAXWSDeployer.java > URL: > http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/framework/JAXWSDeployer.java?rev=776555&r1=776554&r2=776555&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/framework/JAXWSDeployer.java > (original) > +++ > webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/framework/JAXWSDeployer.java > Wed May 20 05:12:58 2009 > @@ -102,7 +102,8 @@ > axisConfig.getSystemClassLoader(), > true, > (File) axisConfig. > - > getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR)); > + > getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR), > + axisConfig.isChildFirstClassLoading()); > Thread.currentThread().setContextClassLoader(classLoader); > deployClasses("JAXWS-Builtin", file.toURL(), > Thread.currentThread().getContextClassLoader(), classList); > } catch (Exception e) { > @@ -151,7 +152,8 @@ > axisConfig.getSystemClassLoader(), > true, > (File) axisConfig. > - > getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR)); > + > getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR), > + axisConfig.isChildFirstClassLoading()); > Thread.currentThread().setContextClassLoader(classLoader); > > ArrayList classList = getListOfClasses(deploymentFileData); > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java > URL: > http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java?rev=776555&r1=776554&r2=776555&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java > (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/Constants.java > Wed May 20 05:12:58 2009 > @@ -438,6 +438,13 @@ > public static final String REST_METHOD_PARAM="RESTMethod"; > public static final String > REST_INPUTSERIALIZE_PARAM="RESTInputSerialization"; > public static final String > REST_OUTPUTSERIALIZE_PARAM="RESTOutputSerialization"; > - > + > + /** > + * this parameter enables child first class loading. > + * so the modules and services first use the classes in their class > loader first > + */ > + > + public static final String > ENABLE_CHILD_FIRST_CLASS_LOADING="EnableChldFirstClassLoading"; > + > } > } > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentClassLoader.java > URL: > http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentClassLoader.java?rev=776555&r1=776554&r2=776555&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentClassLoader.java > (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentClassLoader.java > Wed May 20 05:12:58 2009 > @@ -43,6 +43,8 @@ > // List of jar files inside the jars in the original url > private List embedded_jars; > > + private boolean isChildFirstClassLoading; > + > /** > * DeploymentClassLoader is extended from URLClassLoader. The constructor > * does not override the super constructor, but takes in an addition list > of > @@ -51,10 +53,14 @@ > * @param urls <code>URL</code>s > * @param parent parent classloader <code>ClassLoader</code> > */ > - public DeploymentClassLoader(URL[] urls, List embedded_jars, ClassLoader > parent) { > + public DeploymentClassLoader(URL[] urls, > + List embedded_jars, > + ClassLoader parent, > + boolean isChildFirstClassLoading) { > super(urls, parent); > this.urls = urls; > this.embedded_jars = embedded_jars; > + this.isChildFirstClassLoading = isChildFirstClassLoading; > } > > /** > @@ -260,4 +266,21 @@ > } > return null; > } > + > + protected synchronized Class<?> loadClass(String name, boolean resolve) > throws ClassNotFoundException { > + Class c = null; > + if (!isChildFirstClassLoading) { > + c = super.loadClass(name, resolve); > + } else { > + c = findLoadedClass(name); > + if (c == null) { > + try { > + c = findClass(name); > + } catch (Exception e) { > + c = super.loadClass(name, resolve); > + } > + } > + } > + return c; > + } > } > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java > URL: > http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java?rev=776555&r1=776554&r2=776555&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java > (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/DeploymentEngine.java > Wed May 20 05:12:58 2009 > @@ -311,7 +311,8 @@ > new URL[]{moduleurl}, > axisConfig.getModuleClassLoader(), > true, > - (File) > axisConfig.getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR)); > + (File) > axisConfig.getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR), > + axisConfig.isChildFirstClassLoading()); > AxisModule module = new AxisModule(); > module.setModuleClassLoader(deploymentClassLoader); > module.setParent(axisConfig); > @@ -367,7 +368,8 @@ > new URL[]{servicesURL}, > axisConfig.getServiceClassLoader(), > true, > - (File) > axisConfig.getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR)); > + (File) > axisConfig.getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR), > + axisConfig.isChildFirstClassLoading()); > String metainf = "meta-inf"; > serviceGroup.setServiceGroupClassLoader(serviceClassLoader); > //processing wsdl.list > @@ -1163,7 +1165,8 @@ > axismodule = new AxisModule(); > ArchiveReader archiveReader = new ArchiveReader(); > > - currentDeploymentFile.setClassLoader(false, > config.getModuleClassLoader(), null); > + currentDeploymentFile.setClassLoader(false, > config.getModuleClassLoader(), null, > + config.isChildFirstClassLoading()); > > axismodule.setModuleClassLoader(currentDeploymentFile.getClassLoader()); > archiveReader.readModuleArchive(currentDeploymentFile, axismodule, > false, config); > @@ -1266,7 +1269,8 @@ > throws AxisFault { > try { > DeploymentFileData currentDeploymentFile = new > DeploymentFileData(serviceFile, null); > - DeploymentClassLoader classLoader = > Utils.createClassLoader(serviceFile); > + DeploymentClassLoader classLoader = > Utils.createClassLoader(serviceFile, > + > configCtx.getAxisConfiguration().isChildFirstClassLoading()); > currentDeploymentFile.setClassLoader(classLoader); > AxisServiceGroup serviceGroup = new AxisServiceGroup(); > serviceGroup.setServiceGroupClassLoader(classLoader); > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleDeployer.java > URL: > http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleDeployer.java?rev=776555&r1=776554&r2=776555&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleDeployer.java > (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ModuleDeployer.java > Wed May 20 05:12:58 2009 > @@ -25,9 +25,11 @@ > import org.apache.axis2.deployment.repository.util.ArchiveReader; > import org.apache.axis2.deployment.repository.util.DeploymentFileData; > import org.apache.axis2.description.AxisModule; > +import org.apache.axis2.description.Parameter; > import org.apache.axis2.engine.AxisConfiguration; > import org.apache.axis2.i18n.Messages; > import org.apache.axis2.util.Utils; > +import org.apache.axis2.util.JavaUtils; > import org.apache.commons.logging.Log; > import org.apache.commons.logging.LogFactory; > > @@ -62,9 +64,11 @@ > StringWriter errorWriter = new StringWriter(); > boolean isDirectory = deploymentFileData.getFile().isDirectory(); > try { > + > deploymentFileData.setClassLoader(isDirectory, > > axisConfig.getModuleClassLoader(), > - > (File)axisConfig.getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR)); > + > (File)axisConfig.getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR), > + this.axisConfig.isChildFirstClassLoading()); > AxisModule metaData = new AxisModule(); > > metaData.setModuleClassLoader(deploymentFileData.getClassLoader()); > metaData.setParent(axisConfig); > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/POJODeployer.java > URL: > http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/POJODeployer.java?rev=776555&r1=776554&r2=776555&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/POJODeployer.java > (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/POJODeployer.java > Wed May 20 05:12:58 2009 > @@ -147,7 +147,8 @@ > > configCtx.getAxisConfiguration().getSystemClassLoader(), > true, > (File)configCtx.getAxisConfiguration(). > - > getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR)); > + > getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR), > + > configCtx.getAxisConfiguration().isChildFirstClassLoading()); > Thread.currentThread().setContextClassLoader(classLoader); > className = className.replaceAll(".class", ""); > className = className.replaceAll("/", "."); > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceDeployer.java > URL: > http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceDeployer.java?rev=776555&r1=776554&r2=776555&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceDeployer.java > (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/ServiceDeployer.java > Wed May 20 05:12:58 2009 > @@ -63,7 +63,8 @@ > try { > deploymentFileData.setClassLoader(isDirectory, > > axisConfig.getServiceClassLoader(), > - > (File)axisConfig.getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR)); > + > (File)axisConfig.getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR), > + axisConfig.isChildFirstClassLoading()); > HashMap wsdlservice = > archiveReader.processWSDLs(deploymentFileData); > if (wsdlservice != null && wsdlservice.size() > 0) { > Iterator services = wsdlservice.values().iterator(); > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/TransportDeployer.java > URL: > http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/TransportDeployer.java?rev=776555&r1=776554&r2=776555&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/TransportDeployer.java > (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/TransportDeployer.java > Wed May 20 05:12:58 2009 > @@ -53,7 +53,8 @@ > try { > deploymentFileData.setClassLoader(isDirectory, > axisConfig.getModuleClassLoader(), > - (File) > axisConfig.getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR)); > + (File) > axisConfig.getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR), > + axisConfig.isChildFirstClassLoading()); > > ClassLoader loader = deploymentFileData.getClassLoader(); > Thread.currentThread().setContextClassLoader(loader); > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/DeploymentFileData.java > URL: > http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/DeploymentFileData.java?rev=776555&r1=776554&r2=776555&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/DeploymentFileData.java > (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/repository/util/DeploymentFileData.java > Wed May 20 05:12:58 2009 > @@ -102,7 +102,7 @@ > this.classLoader = classLoader; > } > > - public void setClassLoader(boolean isDirectory, ClassLoader parent, File > file) throws AxisFault { > + public void setClassLoader(boolean isDirectory, ClassLoader parent, File > file, boolean isChildFirstClassLoading) throws AxisFault { > if (!isDirectory) { > if (this.file != null) { > URL[] urlsToLoadFrom; > @@ -112,7 +112,7 @@ > > this.file.getAbsolutePath())); > } > urlsToLoadFrom = new URL[]{this.file.toURL()}; > - classLoader = Utils.createClassLoader(urlsToLoadFrom, > parent, true, file); > + classLoader = Utils.createClassLoader(urlsToLoadFrom, > parent, true, file, isChildFirstClassLoading); > } catch (Exception e) { > throw AxisFault.makeFault(e); > } > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java > URL: > http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java?rev=776555&r1=776554&r2=776555&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java > (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/deployment/util/Utils.java > Wed May 20 05:12:58 2009 > @@ -667,13 +667,10 @@ > DeploymentFileData filedata = new DeploymentFileData( > inputFile); > > - filedata > - .setClassLoader( > - false, > + filedata.setClassLoader(false, > moduleClassLoader, > - (File)axisConfig > - .getParameterValue( > - > Constants.Configuration.ARTIFACTS_TEMP_DIR)); > + > (File)axisConfig.getParameterValue(Constants.Configuration.ARTIFACTS_TEMP_DIR), > + axisConfig.isChildFirstClassLoading()); > HashMap wsdlservice = > archiveReader.processWSDLs(filedata); > if (wsdlservice != null && wsdlservice.size() > 0) { > Iterator servicesitr = > wsdlservice.values().iterator(); > @@ -846,7 +843,7 @@ > excludeList.add("shutDown"); > } > > - public static DeploymentClassLoader createClassLoader(File serviceFile) > + public static DeploymentClassLoader createClassLoader(File serviceFile, > boolean isChildFirstClassLoading) > throws MalformedURLException { > ClassLoader contextClassLoader = > (ClassLoader)org.apache.axis2.java.security.AccessController > @@ -856,13 +853,14 @@ > } > }); > return createDeploymentClassLoader(new URL[]{serviceFile.toURL()}, > - contextClassLoader, new > ArrayList()); > + contextClassLoader, new > ArrayList(), isChildFirstClassLoading); > } > > public static ClassLoader createClassLoader(ArrayList urls, > ClassLoader > serviceClassLoader, > boolean extractJars, > - File tmpDir) { > + File tmpDir, > + boolean > isChildFirstClassLoading) { > URL url = (URL)urls.get(0); > if (extractJars) { > try { > @@ -871,7 +869,7 @@ > urls.addAll(0, Arrays.asList(urls1)); > URL[] urls2 = (URL[])urls.toArray(new URL[urls.size()]); > return createDeploymentClassLoader(urls2, serviceClassLoader, > - null); > + null, > isChildFirstClassLoading); > } catch (Exception e) { > log > .warn("Exception extracting jars into temporary > directory : " > @@ -883,7 +881,7 @@ > List embedded_jars = Utils.findLibJars(url); > URL[] urls2 = (URL[])urls.toArray(new URL[urls.size()]); > return createDeploymentClassLoader(urls2, serviceClassLoader, > - embedded_jars); > + embedded_jars, > isChildFirstClassLoading); > } > > public static File toFile(URL url) throws UnsupportedEncodingException { > @@ -894,12 +892,13 @@ > public static ClassLoader createClassLoader(URL[] urls, > ClassLoader > serviceClassLoader, > boolean extractJars, > - File tmpDir) { > + File tmpDir, > + boolean > isChildFirstClassLoading) { > if (extractJars) { > try { > URL[] urls1 = Utils.getURLsForAllJars(urls[0], tmpDir); > return createDeploymentClassLoader(urls1, serviceClassLoader, > - null); > + null, > isChildFirstClassLoading); > } catch (Exception e) { > log > .warn("Exception extracting jars into temporary > directory : " > @@ -910,17 +909,17 @@ > } > List embedded_jars = Utils.findLibJars(urls[0]); > return createDeploymentClassLoader(urls, serviceClassLoader, > - embedded_jars); > + embedded_jars, > isChildFirstClassLoading); > } > > private static DeploymentClassLoader createDeploymentClassLoader( > final URL[] urls, final ClassLoader serviceClassLoader, > - final List embeddedJars) { > + final List embeddedJars, final boolean isChildFirstClassLoading) > { > return (DeploymentClassLoader)AccessController > .doPrivileged(new PrivilegedAction() { > public Object run() { > return new DeploymentClassLoader(urls, embeddedJars, > - serviceClassLoader); > + serviceClassLoader, > isChildFirstClassLoading); > } > }); > } > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisDescription.java > URL: > http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisDescription.java?rev=776555&r1=776554&r2=776555&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisDescription.java > (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/description/AxisDescription.java > Wed May 20 05:12:58 2009 > @@ -25,6 +25,7 @@ > import org.apache.axiom.om.OMNode; > import org.apache.axiom.om.OMText; > import org.apache.axis2.AxisFault; > +import org.apache.axis2.Constants; > import org.apache.axis2.engine.AxisConfiguration; > import org.apache.axis2.i18n.Messages; > import org.apache.axis2.modules.Module; > @@ -566,4 +567,6 @@ > return policySubject; > } > > + > + > } > > Modified: > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java > URL: > http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java?rev=776555&r1=776554&r2=776555&view=diff > ============================================================================== > --- > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java > (original) > +++ > webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisConfiguration.java > Wed May 20 05:12:58 2009 > @@ -34,6 +34,7 @@ > import javax.xml.namespace.QName; > > import org.apache.axis2.AxisFault; > +import org.apache.axis2.Constants; > import org.apache.axis2.transaction.TransactionConfiguration; > import org.apache.axis2.builder.Builder; > import org.apache.axis2.builder.unknowncontent.UnknownContentBuilder; > @@ -62,6 +63,7 @@ > import org.apache.axis2.util.TargetResolver; > import org.apache.axis2.util.Utils; > import org.apache.axis2.util.FaultyServiceData; > +import org.apache.axis2.util.JavaUtils; > import org.apache.commons.logging.Log; > import org.apache.commons.logging.LogFactory; > > @@ -1426,4 +1428,13 @@ > axisService, axisConfiguration); > } > } > + > + public boolean isChildFirstClassLoading(){ > + boolean childFirstClassLoading = false; > + Parameter isChildFirstClassLoading = > this.getParameter(Constants.Configuration.ENABLE_CHILD_FIRST_CLASS_LOADING); > + if (isChildFirstClassLoading != null){ > + childFirstClassLoading = > JavaUtils.isTrueExplicitly(isChildFirstClassLoading.getValue()); > + } > + return childFirstClassLoading; > + } > } > > >