back to the original session.invalidate() for now since CDI tcks need it and our lifecycle doesn't allow us yet to do it later
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/9d182562 Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/9d182562 Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/9d182562 Branch: refs/heads/master Commit: 9d182562bb67e02bb47395cb77b86ea88cef8014 Parents: 272cb40 Author: Romain Manni-Bucau <rmannibu...@apache.org> Authored: Mon May 4 21:08:35 2015 +0200 Committer: Romain Manni-Bucau <rmannibu...@apache.org> Committed: Mon May 4 21:08:35 2015 +0200 ---------------------------------------------------------------------- .../apache/openejb/cdi/CdiAppContextsService.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/9d182562/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java ---------------------------------------------------------------------- diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java index 02c190f..52b87f6 100644 --- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java +++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java @@ -203,12 +203,19 @@ public class CdiAppContextsService extends AbstractContextsService implements Co final Object event = HttpSessionContextSessionAware.class.isInstance(sc) ? HttpSessionContextSessionAware.class.cast(sc).getSession() : sc; if (HttpSession.class.isInstance(event)) { final HttpSession httpSession = HttpSession.class.cast(event); - if (httpSession.getId() == null) { - continue; + if (httpSession.getId() != null) { // TODO: think if we add a flag to deactivate this behavior (clustering case??) + initSessionContext(httpSession); + try { + // far to be sexy but we need 1) triggering listeners + 2) destroying it *now* + // -> org.jboss.cdi.tck.tests.context.session.listener.shutdown.SessionContextListenerShutdownTest + httpSession.invalidate(); + } finally { + destroySessionContext(event); + } } - initSessionContext(httpSession); + } else { + destroySessionContext(event); } - destroySessionContext(event); } sessionCtxManager.getContextById().clear(); }