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
This commit is contained in:
Phillip Webb
2014-12-08 11:11:22 -08:00
parent 22e8478aa3
commit c23a764a1c
4 changed files with 14 additions and 10 deletions

View File

@@ -37,6 +37,9 @@ import org.springframework.util.Assert;
public abstract class AbstractConfigurableEmbeddedServletContainer implements
ConfigurableEmbeddedServletContainer {
private static final int DEFAULT_SESSION_TIMEOUT = (int) TimeUnit.SECONDS
.toMinutes(30);
private String contextPath = "";
private boolean registerDefaultServlet = true;
@@ -57,7 +60,7 @@ public abstract class AbstractConfigurableEmbeddedServletContainer implements
private InetAddress address;
private int sessionTimeout;
private int sessionTimeout = DEFAULT_SESSION_TIMEOUT;
private Ssl ssl;

View File

@@ -49,8 +49,8 @@ public interface ConfigurableEmbeddedServletContainer {
void setPort(int port);
/**
* The session timeout in seconds (default 30). If 0 or negative then sessions never
* expire.
* The session timeout in seconds (default 30 minutes). If 0 or negative then sessions
* never expire.
* @param sessionTimeout the session timeout
*/
void setSessionTimeout(int sessionTimeout);

View File

@@ -28,6 +28,7 @@ import java.util.List;
import org.eclipse.jetty.http.MimeTypes;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.SessionManager;
import org.eclipse.jetty.server.handler.ErrorHandler;
import org.eclipse.jetty.server.ssl.SslSocketConnector;
import org.eclipse.jetty.servlet.ErrorPageErrorHandler;
@@ -227,13 +228,13 @@ public class JettyEmbeddedServletContainerFactory extends
.getClassLoader())) {
addJspServlet(context);
}
ServletContextInitializer[] initializersToUse = mergeInitializers(initializers);
Configuration[] configurations = getWebAppContextConfigurations(context,
initializersToUse);
context.setConfigurations(configurations);
context.getSessionHandler().getSessionManager()
.setMaxInactiveInterval(getSessionTimeout());
int sessionTimeout = (getSessionTimeout() > 0 ? getSessionTimeout() : -1);
SessionManager sessionManager = context.getSessionHandler().getSessionManager();
sessionManager.setMaxInactiveInterval(sessionTimeout);
postProcessWebAppContext(context);
}

View File

@@ -344,12 +344,12 @@ public class TomcatEmbeddedServletContainerFactory extends
for (MimeMappings.Mapping mapping : getMimeMappings()) {
context.addMimeMapping(mapping.getExtension(), mapping.getMimeType());
}
long timeout = getSessionTimeout();
if (timeout > 0) {
long sessionTimeout = getSessionTimeout();
if (sessionTimeout > 0) {
// 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) {
customizer.customize(context);
}