Author: rmannibucau
Date: Mon Jan 7 01:31:48 2013
New Revision: 1429635
URL: http://svn.apache.org/viewvc?rev=1429635&view=rev
Log:
OPENEJB-1984 simple session management in embedded mode
Modified:
openejb/trunk/openejb/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.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=1429635&r1=1429634&r2=1429635&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:31:48 2013
@@ -52,6 +52,7 @@ import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.StringTokenizer;
+import java.util.concurrent.ConcurrentHashMap;
/**
* A class to take care of HTTP Requests. It parses headers, content, form
and url
@@ -63,6 +64,8 @@ public class HttpRequestImpl implements
private static final String CHUNKED = "chunked";
protected static final String EJBSESSIONID = "EJBSESSIONID";
+ private static final Map<String, HttpSession> SESSIONS = new
ConcurrentHashMap<String, HttpSession>();
+
/**
* 5.1.1 Method
*/
@@ -315,6 +318,19 @@ public class HttpRequestImpl implements
parameters.putAll(this.getFormParameters());
parameters.putAll(this.getQueryParameters());
+
+ if (headers.containsKey("Cookie")) {
+ final String cookie = headers.get("Cookie");
+ if (cookie != null) {
+ final String[] cookies = cookie.split(";");
+ for (String c : cookies) {
+ final String current = c.trim();
+ if (current.startsWith("EJBSESSIONID=")) {
+ session =
SESSIONS.get(current.substring("EJBSESSIONID=".length()));
+ }
+ }
+ }
+ }
}
public void print(final Logger log, boolean formatXml) {
@@ -617,8 +633,6 @@ public class HttpRequestImpl implements
this.in = new ServletByteArrayIntputStream(body);
}
- session = new HttpSessionImpl();
-
}
private byte[] readContent(DataInput in) throws IOException {
@@ -761,6 +775,10 @@ public class HttpRequestImpl implements
}
public HttpSession getSession(boolean create) {
+ if (session == null) {
+ session = new HttpSessionImpl();
+ SESSIONS.put(session.getId(), session);
+ }
return session;
}
@@ -809,7 +827,7 @@ public class HttpRequestImpl implements
}
public HttpSession getSession() {
- return getSession(true);
+ return session;
}
@Override