Author: rmannibucau
Date: Mon Jan  7 01:36:43 2013
New Revision: 1429640

URL: http://svn.apache.org/viewvc?rev=1429640&view=rev
Log:
OPENEJB-1984 cleanup of session on invalidate

Modified:
    
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
    
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java

Modified: 
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java?rev=1429640&r1=1429639&r2=1429640&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java
 Mon Jan  7 01:36:43 2013
@@ -65,6 +65,7 @@ public class HttpRequestImpl implements 
     private static final String CHUNKED = "chunked";
     protected static final String EJBSESSIONID = "EJBSESSIONID";
 
+    // note: no eviction so invalidate has to be called properly
     private static final ConcurrentMap<String, HttpSession> SESSIONS = new 
ConcurrentHashMap<String, HttpSession>();
 
     /**
@@ -777,7 +778,7 @@ public class HttpRequestImpl implements 
 
     public HttpSession getSession(boolean create) {
         if (session == null) {
-            session = new HttpSessionImpl();
+            session = new HttpSessionImpl(SESSIONS);
             final HttpSession previous = SESSIONS.putIfAbsent(session.getId(), 
session);
             if (previous != null) {
                 session = previous;

Modified: 
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java?rev=1429640&r1=1429639&r2=1429640&view=diff
==============================================================================
--- 
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
 (original)
+++ 
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpSessionImpl.java
 Mon Jan  7 01:36:43 2013
@@ -21,10 +21,20 @@ import javax.servlet.http.HttpSessionCon
 import org.apache.openejb.client.ArrayEnumeration;
 
 import java.util.*;
+import java.util.concurrent.ConcurrentMap;
 
 public class HttpSessionImpl implements HttpSession {
     private String sessionId = UUID.randomUUID().toString();
     private Map<String, Object> attributes = new HashMap<String, Object>();
+    private final ConcurrentMap<String, HttpSession> mapToClean;
+
+    public HttpSessionImpl(final ConcurrentMap<String, HttpSession> sessions) {
+        mapToClean = sessions;
+    }
+
+    public HttpSessionImpl() {
+        this(null);
+    }
 
     @Override
     public void removeAttribute(String name) {
@@ -45,6 +55,9 @@ public class HttpSessionImpl implements 
     @Override
     public void invalidate() {
         attributes.clear();
+        if (mapToClean != null) {
+            mapToClean.remove(sessionId);
+        }
     }
 
     @Override


Reply via email to