Hi,

i'm using Tomcat 7.0.70 on ubuntu 15.10.

I have created a SampleClassLoader :

package com.axway.tnt.compliance;

import org.apache.catalina.loader.WebappClassLoader;

import java.io.File;
import java.io.IOException;

public class SampleClassLoader extends WebappClassLoader
{
    public SampleClassLoader() {
        super();
    }

    public SampleClassLoader(final ClassLoader parent) {
        super(parent);
    }

    @Override
    protected boolean validateJarFile(final File file) throws IOException {
        System.out.println("-----------Load: " + file.getName());
        return super.validateJarFile(file);
    }
}

I have put it in a jar in ../apache-tomcat/lib

I have a webapp : apache-tomcat/lwebapps/sample

I have modified  apache-tomcat/lwebapps/sample/meta-inf/context.xml to use this 
classloader :


<Context>

    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>

    <!-- Fix Tomcat startup issue due to noteable change.
    In 7.0.51 onwards, the web application class loader is now a higher 
priority for loading classes than the system class loader.
    With this attribute set to true, the class loader follow the standard Java2 
delegation model,
    and attempt to load classes from parent class loaders before looking inside 
the web application.
    -->
    <Loader delegate="true" 
loaderClass="com.axway.tnt.compliance.SampleClassLoader"/>

</Context>


And it's working fine.

But i don't want to modify my tomcat, i want to put my classloader in my 
webapp/lib and in this case i have :


java.lang.ClassNotFoundException: com.axway.tnt.compliance.SampleClassLoader
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at 
org.apache.catalina.loader.WebappLoader.createClassLoader(WebappLoader.java:723)
    at 
org.apache.catalina.loader.WebappLoader.startInternal(WebappLoader.java:582)
Caused by: org.apache.catalina.LifecycleException: Failed to start component 
[WebappLoader[/sample]]
    at 
org.apache.catalina.loader.WebappLoader.startInternal(WebappLoader.java:632)
Caused by: java.lang.ClassNotFoundException: 
com.axway.tnt.compliance.SampleClassLoader
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at 
org.apache.catalina.loader.WebappLoader.createClassLoader(WebappLoader.java:723)
    at 
org.apache.catalina.loader.WebappLoader.startInternal(WebappLoader.java:582)


Any idea to do that ?

Thanks for your time and answers.


Reply via email to