On 20/03/2012 15:41, Konstantin Kolinko wrote:
> 1). Why isn't is starting with this.getParentClassLoader(); ?
> 
> The actual shared classloader is the one used in
> WebappLoader#createClassLoader().  I'd say that calling
> Server.getParentClassLoader() will be closer to the truth here.
> 
> E.g. Tomcat class creates and calls Server instance directly, without
> relying on Catalina. So using Server.getParentClassLoader() seems to
> be better here.

+1 to that change.

>> +            // Walk the class loader hierarchy. Stop at the system class 
>> loader.
>> +            // This will add the shared (if present) and common class 
>> loaders
>> +            while (cl != ClassLoader.getSystemClassLoader()) {
> 
> 2) It should not hurt to move ClassLoader.getSystemClassLoader() out
> of the loop. This method involves a SecurityManager check and it is
> better to do it once.

+1.

>> +                if (cl instanceof URLClassLoader) {
>> +                    URL[] urls = ((URLClassLoader) cl).getURLs();
>> +                    for (URL url : urls) {
>> +                        if (url.getProtocol().equals("file")) {
>> +                            try {
>> +                                File f = new File (url.toURI());
>> +                                if (f.isFile() &&
>> +                                        f.getName().endsWith(".jar")) {
>> +                                    ExtensionValidator.addSystemResource(f);
> 
> 3) The above is a static method and it does not check for duplicates.
> 
> It would be a substantial change to ExtensionValidator to fix it, so I
> submitted the following issue:
> https://issues.apache.org/bugzilla/show_bug.cgi?id=52952

Comments on bug.

Mark

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to