commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Cédrik LIME (JIRA) <>
Subject [jira] Commented: (FILEUPLOAD-125) new FileCleanerCleanup may lead to problems [PATCH]
Date Thu, 01 Mar 2007 16:21:50 GMT


Cédrik LIME commented on FILEUPLOAD-125:


Thanks for your answer. I agree that ultimately commons-io should enable us to manage this
thread more finely... Until that time, we'll have to cope with it.

Thread.currentThread().getContextClassLoader() represents the current web application's ClassLoader,
not the current Thread ClassLoader (which we could get with Thread.currentThread().getClass().getClassLoader()).
A Thread's ContextClassLoader /will/ change at runtime by the J2EE container to the served
webapp's ClassLoader (that is: the same Thread will serve many different webapps during its

I have mixed feelings about some piece of code in a web application affecting other non-related
web applications. While the fault is on the shoulders of commons-io, I think we shouldn't
allow the possibility to impact the other running webapps. Hence the aforementioned patch
which I honestly believe works in all cases and for every application servers.

Anyway, this problem only arises when commons-io is in the container classpath, which hopefully
will not be the case in a typical J2EE configuration.

> new FileCleanerCleanup may lead to problems [PATCH]
> ---------------------------------------------------
>                 Key: FILEUPLOAD-125
>                 URL:
>             Project: Commons FileUpload
>          Issue Type: Bug
>    Affects Versions: 1.2
>            Reporter: Cédrik LIME
> This is a follow-up on FILEUPLOAD-120.
> As described in using.html#resourceCleanup, stopping the IO's reaper thread when commons-io
is in the container's classpath will impact other running applications. The solution to this
is to test if the FileCleaner class was loaded by the application's ClassLoader (i.e. commons-io.jar
is in WEB-INF/lib/):
>     public void contextDestroyed(ServletContextEvent sce) {
>         if (FileCleaner.class.getClassLoader() == Thread.currentThread().getContextClassLoader())
>             FileCleaner.exitWhenFinished();
>         }
>     }
> This is, if users don't forget to put FileCleanerCleanup as a servlet listener, of course...

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:
For additional commands, e-mail:

View raw message