[
https://issues.apache.org/jira/browse/CAMEL-6452?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13684235#comment-13684235
]
Sanjay Deshmukh commented on CAMEL-6452:
----------------------------------------
Awesome - that gives me a lot more context and definitely sounds like the way
to go. I like the per-context or per-streamcache temp dir that gets removed
when the context or cache shuts down.
In the meantime, in case anyone else runs into this issue, here's the
workaround (i.e. hack) that I added to the cleanup routine of our project:
{code}
public void cleanShutdownHook() throws Exception {
Class<?> klass = Class.forName("java.lang.ApplicationShutdownHooks");
Field field = klass.getDeclaredField("hooks");
field.setAccessible(true);
@SuppressWarnings("unchecked")
Map<Thread, Thread> hooks = (Map<Thread, Thread>) field.get(null);
Thread target = null;
for(Thread thread: hooks.values()) {
if
(thread.getClass().getName().equals("org.apache.camel.util.FileUtil$1")) {
target = thread;
break;
}
}
if (target != null) {
Runtime.getRuntime().removeShutdownHook(target);
}
}
{code}
> FileUtil.getDefaultTempDir() causes a classloader leak in webapps
> -----------------------------------------------------------------
>
> Key: CAMEL-6452
> URL: https://issues.apache.org/jira/browse/CAMEL-6452
> Project: Camel
> Issue Type: Bug
> Components: camel-core
> Affects Versions: 2.10.4
> Environment: tomcat 7, spring 3.2
> Reporter: Sanjay Deshmukh
> Fix For: 2.10.5, 2.11.1, 2.12.0
>
> Attachments:
> 0001-Fixed-CAMEL-6452-by-adding-a-cleanup-routine-to-remo.patch
>
>
> FileUtil.getDefaultTempDir() registers a JVM shutdown hook to delete the
> temporary directory it creates. We are using camel in a web application in
> Tomcat that gets dynamically reloaded as updates are available, so the JVM is
> normally never shut down. This is causing 'camel-tmp-*' directories to linger
> in $CATALINA_HOME/temp, and - more importantly - classloader leaks, which are
> a major problem for us.
> If the thread that gets registered as the shutdown hook were stored in a
> class variable, I could unregister it when the application is being unloaded.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira