diff --git a/gemini/src/main/java/com/techempower/gemini/Context.java b/gemini/src/main/java/com/techempower/gemini/Context.java index a2055de..a37e1e0 100755 --- a/gemini/src/main/java/com/techempower/gemini/Context.java +++ b/gemini/src/main/java/com/techempower/gemini/Context.java @@ -386,6 +386,20 @@ public Session getSession(boolean create) return this.session; } + /** + * In addition to invalidating the session, also sets the Context.session member variable to null + * so it is re-created as needed and is available for immediate use. + */ + public void invalidateSession() + { + if (this.session != null) + { + this.session.invalidate(); + } + // Rely on getSession() to create a new session as needed. + this.session = null; + } + /** * Gets the full standard (non-secure) URL to the Servlet. */ diff --git a/gemini/src/main/java/com/techempower/gemini/context/SessionNamedValues.java b/gemini/src/main/java/com/techempower/gemini/context/SessionNamedValues.java index 1d84f01..da327f0 100755 --- a/gemini/src/main/java/com/techempower/gemini/context/SessionNamedValues.java +++ b/gemini/src/main/java/com/techempower/gemini/context/SessionNamedValues.java @@ -306,11 +306,7 @@ public SessionNamedValues clear() */ public SessionNamedValues invalidate() { - final Session session = context.getSession(false); - if (session != null) - { - session.invalidate(); - } + context.invalidateSession(); return this; }