Commit c23a764a authored by Phillip Webb's avatar Phillip Webb

Set the default session timeout to 30 mins

Update AbstractConfigurableEmbeddedServletContainer to set the default
session timeout to 30 minutes. Also correct Javadoc to specify that
the default is '30 minutes'.

Fixes gh-2084
parent 22e8478a
...@@ -37,6 +37,9 @@ import org.springframework.util.Assert; ...@@ -37,6 +37,9 @@ import org.springframework.util.Assert;
public abstract class AbstractConfigurableEmbeddedServletContainer implements public abstract class AbstractConfigurableEmbeddedServletContainer implements
ConfigurableEmbeddedServletContainer { ConfigurableEmbeddedServletContainer {
private static final int DEFAULT_SESSION_TIMEOUT = (int) TimeUnit.SECONDS
.toMinutes(30);
private String contextPath = ""; private String contextPath = "";
private boolean registerDefaultServlet = true; private boolean registerDefaultServlet = true;
...@@ -57,7 +60,7 @@ public abstract class AbstractConfigurableEmbeddedServletContainer implements ...@@ -57,7 +60,7 @@ public abstract class AbstractConfigurableEmbeddedServletContainer implements
private InetAddress address; private InetAddress address;
private int sessionTimeout; private int sessionTimeout = DEFAULT_SESSION_TIMEOUT;
private Ssl ssl; private Ssl ssl;
......
...@@ -49,8 +49,8 @@ public interface ConfigurableEmbeddedServletContainer { ...@@ -49,8 +49,8 @@ public interface ConfigurableEmbeddedServletContainer {
void setPort(int port); void setPort(int port);
/** /**
* The session timeout in seconds (default 30). If 0 or negative then sessions never * The session timeout in seconds (default 30 minutes). If 0 or negative then sessions
* expire. * never expire.
* @param sessionTimeout the session timeout * @param sessionTimeout the session timeout
*/ */
void setSessionTimeout(int sessionTimeout); void setSessionTimeout(int sessionTimeout);
......
...@@ -28,6 +28,7 @@ import java.util.List; ...@@ -28,6 +28,7 @@ import java.util.List;
import org.eclipse.jetty.http.MimeTypes; import org.eclipse.jetty.http.MimeTypes;
import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.SessionManager;
import org.eclipse.jetty.server.handler.ErrorHandler; import org.eclipse.jetty.server.handler.ErrorHandler;
import org.eclipse.jetty.server.ssl.SslSocketConnector; import org.eclipse.jetty.server.ssl.SslSocketConnector;
import org.eclipse.jetty.servlet.ErrorPageErrorHandler; import org.eclipse.jetty.servlet.ErrorPageErrorHandler;
...@@ -227,13 +228,13 @@ public class JettyEmbeddedServletContainerFactory extends ...@@ -227,13 +228,13 @@ public class JettyEmbeddedServletContainerFactory extends
.getClassLoader())) { .getClassLoader())) {
addJspServlet(context); addJspServlet(context);
} }
ServletContextInitializer[] initializersToUse = mergeInitializers(initializers); ServletContextInitializer[] initializersToUse = mergeInitializers(initializers);
Configuration[] configurations = getWebAppContextConfigurations(context, Configuration[] configurations = getWebAppContextConfigurations(context,
initializersToUse); initializersToUse);
context.setConfigurations(configurations); context.setConfigurations(configurations);
context.getSessionHandler().getSessionManager() int sessionTimeout = (getSessionTimeout() > 0 ? getSessionTimeout() : -1);
.setMaxInactiveInterval(getSessionTimeout()); SessionManager sessionManager = context.getSessionHandler().getSessionManager();
sessionManager.setMaxInactiveInterval(sessionTimeout);
postProcessWebAppContext(context); postProcessWebAppContext(context);
} }
......
...@@ -344,12 +344,12 @@ public class TomcatEmbeddedServletContainerFactory extends ...@@ -344,12 +344,12 @@ public class TomcatEmbeddedServletContainerFactory extends
for (MimeMappings.Mapping mapping : getMimeMappings()) { for (MimeMappings.Mapping mapping : getMimeMappings()) {
context.addMimeMapping(mapping.getExtension(), mapping.getMimeType()); context.addMimeMapping(mapping.getExtension(), mapping.getMimeType());
} }
long timeout = getSessionTimeout(); long sessionTimeout = getSessionTimeout();
if (timeout > 0) { if (sessionTimeout > 0) {
// Tomcat timeouts are in minutes // Tomcat timeouts are in minutes
timeout = Math.max(TimeUnit.SECONDS.toMinutes(timeout), 1L); sessionTimeout = Math.max(TimeUnit.SECONDS.toMinutes(sessionTimeout), 1L);
} }
context.setSessionTimeout((int) timeout); context.setSessionTimeout((int) sessionTimeout);
for (TomcatContextCustomizer customizer : this.tomcatContextCustomizers) { for (TomcatContextCustomizer customizer : this.tomcatContextCustomizers) {
customizer.customize(context); customizer.customize(context);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment