You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by st...@apache.org on 2015/05/06 11:13:56 UTC
[15/25] tomee git commit: TOMEE-1577 synchronizing httpsessionimpl
invalidate
TOMEE-1577 synchronizing httpsessionimpl invalidate
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/10280fab
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/10280fab
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/10280fab
Branch: refs/heads/fb_tomee2_owb16
Commit: 10280fab2fdf8b452bf44db81d1b7bdeb9096571
Parents: 64febe3
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Tue May 5 09:49:47 2015 +0200
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Tue May 5 09:49:47 2015 +0200
----------------------------------------------------------------------
.../openejb/server/httpd/HttpSessionImpl.java | 34 +++++++++++++-------
1 file changed, 23 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/10280fab/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
----------------------------------------------------------------------
diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
index f82b7bf..104deb5 100644
--- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
+++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
@@ -40,6 +40,7 @@ public class HttpSessionImpl implements HttpSession {
private final long created = System.currentTimeMillis();
private volatile long timeout;
private volatile long lastAccessed = created;
+ private volatile boolean valid = true;
public HttpSessionImpl(final String contextPath, final long timeout) {
this.timeout = timeout;
@@ -91,20 +92,31 @@ public class HttpSessionImpl implements HttpSession {
@Override
public void invalidate() {
- if (!listeners.isEmpty()) {
- final HttpSessionEvent event = new HttpSessionEvent(this);
- for (final HttpSessionListener o : listeners) {
- try {
- HttpSessionListener.class.cast(o).sessionDestroyed(event);
- } catch (final Throwable th) {
- // ignore, may be undeployed
+ if (!valid) {
+ return;
+ }
+
+ synchronized (this) {
+ if (!valid) {
+ return;
+ }
+
+ if (!listeners.isEmpty()) {
+ final HttpSessionEvent event = new HttpSessionEvent(this);
+ for (final HttpSessionListener o : listeners) {
+ try {
+ HttpSessionListener.class.cast(o).sessionDestroyed(event);
+ } catch (final Throwable th) {
+ // ignore, may be undeployed
+ }
}
}
- }
- final SessionManager sessionManager = SystemInstance.get().getComponent(SessionManager.class);
- if (sessionManager != null) {
- sessionManager.removeSession(sessionId);
+ final SessionManager sessionManager = SystemInstance.get().getComponent(SessionManager.class);
+ if (sessionManager != null) {
+ sessionManager.removeSession(sessionId);
+ }
+ valid = false;
}
}