ensuring classloader is right when destroying sessions
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/a19d26e0 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/a19d26e0 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/a19d26e0 Branch: refs/heads/master Commit: a19d26e0f358cd3efbcf3abc3c124e41d34ee22b Parents: ceedb85 Author: Romain Manni-Bucau <[email protected]> Authored: Thu May 7 09:46:46 2015 +0200 Committer: Romain Manni-Bucau <[email protected]> Committed: Thu May 7 09:46:46 2015 +0200 ---------------------------------------------------------------------- .../server/httpd/session/SessionManager.java | 20 +++++++++++++------- tck/cdi-embedded/src/test/resources/failing.xml | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/a19d26e0/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/session/SessionManager.java ---------------------------------------------------------------------- diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/session/SessionManager.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/session/SessionManager.java index 2284421..378ea9b 100644 --- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/session/SessionManager.java +++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/session/SessionManager.java @@ -48,14 +48,20 @@ public class SessionManager { return; } - final WebBeansContext wbc = app.getWebBeansContext(); - final Iterator<SessionWrapper> iterator = sessions.values().iterator(); - while (iterator.hasNext()) { - final SessionWrapper next = iterator.next(); - if (next.app == app) { - doDestroy(next); - iterator.remove(); + final Thread tc = Thread.currentThread(); + final ClassLoader tccl = tc.getContextClassLoader(); + tc.setContextClassLoader(app.getClassLoader()); + try { + final Iterator<SessionWrapper> iterator = sessions.values().iterator(); + while (iterator.hasNext()) { + final SessionWrapper next = iterator.next(); + if (next.app == app) { + doDestroy(next); + iterator.remove(); + } } + } finally { + tc.setContextClassLoader(tccl); } } http://git-wip-us.apache.org/repos/asf/tomee/blob/a19d26e0/tck/cdi-embedded/src/test/resources/failing.xml ---------------------------------------------------------------------- diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml index 3a10892..d995504 100644 --- a/tck/cdi-embedded/src/test/resources/failing.xml +++ b/tck/cdi-embedded/src/test/resources/failing.xml @@ -32,7 +32,7 @@ -Dopenejb.cdi.conversation.http.use-get-parameter=true --> <classes> - <class name="org.jboss.cdi.tck.tests.context.session.listener.shutdown.SessionContextListenerShutdownTest" /> + <class name="org.jboss.cdi.tck.tests.deployment.shutdown.ApplicationShutdownLifecycleTest" /> </classes> </test> </suite>
