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