Skip to content
This repository was archived by the owner on Sep 16, 2021. It is now read-only.

Commit 72c1670

Browse files
committed
Issue 15 - Use a HashSessionManager/HashSessionIdManager if sessions are disabled.
1 parent 4ee070b commit 72c1670

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

appengine-jetty-managed-runtime/src/main/java/com/google/apphosting/runtime/jetty9/SessionManager.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,12 @@
2525
import com.google.apphosting.runtime.SessionData;
2626
import com.google.apphosting.runtime.SessionStore;
2727

28+
import org.eclipse.jetty.server.Server;
29+
import org.eclipse.jetty.server.SessionIdManager;
2830
import org.eclipse.jetty.server.session.AbstractSession;
2931
import org.eclipse.jetty.server.session.AbstractSessionManager;
3032
import org.eclipse.jetty.server.session.HashSessionIdManager;
33+
import org.eclipse.jetty.util.component.LifeCycle.Listener;
3134

3235
import java.io.PrintWriter;
3336
import java.io.StringWriter;
@@ -44,6 +47,7 @@
4447
import java.util.logging.Logger;
4548

4649
import javax.servlet.http.HttpServletRequest;
50+
import javax.servlet.http.HttpSession;
4751

4852
/**
4953
* Implements the Jetty {@link AbstractSessionManager} and, as an
@@ -322,8 +326,6 @@ static String lastId() {
322326
*/
323327
public SessionManager(List<SessionStore> sessionStoresInWriteOrder) {
324328
super();
325-
// Ludo: prefer to do this outside of the constructor.
326-
setSessionIdManager(new SessionIdManager());
327329
this.sessionStoresInWriteOrder = sessionStoresInWriteOrder;
328330
// We'll always read in the opposite order we write, so create a copy
329331
// of the stores in write order and then reverse it.
@@ -418,7 +420,22 @@ private LogRecord createWarningLogRecord(String message, Throwable ex) {
418420
stringWriter.toString());
419421
}
420422

423+
424+
425+
426+
421427
@Override
428+
public void doStart() throws Exception {
429+
// always use our special id manager one
430+
System.err.println("Using special session id manager");
431+
_sessionIdManager = new SessionIdManager();
432+
_sessionIdManager.start();
433+
addBean(_sessionIdManager,true);
434+
435+
super.doStart();
436+
}
437+
438+
@Override
422439
protected void addSession(AbstractSession session) {
423440
// No list of sessions is kept in memory, so do nothing here.
424441
}

appengine-jetty-managed-runtime/src/main/java/com/google/apphosting/vmruntime/jetty9/VmRuntimeWebAppContext.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.eclipse.jetty.security.ConstraintSecurityHandler;
5050
import org.eclipse.jetty.server.Request;
5151
import org.eclipse.jetty.server.session.AbstractSessionManager;
52+
import org.eclipse.jetty.server.session.HashSessionManager;
5253
import org.eclipse.jetty.server.session.SessionHandler;
5354
import org.eclipse.jetty.util.resource.Resource;
5455
import org.eclipse.jetty.webapp.WebAppContext;
@@ -245,10 +246,8 @@ public void init(String appengineWebXmlFile)
245246
AbstractSessionManager sessionManager;
246247
if (appEngineWebXml.getSessionsEnabled()) {
247248
sessionManager = new SessionManager(createSessionStores(appEngineWebXml));
248-
} else {
249-
sessionManager = new StubSessionManager();
249+
getSessionHandler().setSessionManager(sessionManager);
250250
}
251-
setSessionHandler(new SessionHandler(sessionManager));
252251
}
253252

254253
@Override

0 commit comments

Comments
 (0)