diff --git a/spring-boot/src/main/java/org/springframework/boot/context/embedded/AbstractConfigurableEmbeddedServletContainer.java b/spring-boot/src/main/java/org/springframework/boot/context/embedded/AbstractConfigurableEmbeddedServletContainer.java index f341ffd2c4..e29af11a8b 100644 --- a/spring-boot/src/main/java/org/springframework/boot/context/embedded/AbstractConfigurableEmbeddedServletContainer.java +++ b/spring-boot/src/main/java/org/springframework/boot/context/embedded/AbstractConfigurableEmbeddedServletContainer.java @@ -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; diff --git a/spring-boot/src/main/java/org/springframework/boot/context/embedded/ConfigurableEmbeddedServletContainer.java b/spring-boot/src/main/java/org/springframework/boot/context/embedded/ConfigurableEmbeddedServletContainer.java index ff06841579..21531ad0bf 100644 --- a/spring-boot/src/main/java/org/springframework/boot/context/embedded/ConfigurableEmbeddedServletContainer.java +++ b/spring-boot/src/main/java/org/springframework/boot/context/embedded/ConfigurableEmbeddedServletContainer.java @@ -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); diff --git a/spring-boot/src/main/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactory.java b/spring-boot/src/main/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactory.java index ae96d19186..06f18a89f7 100644 --- a/spring-boot/src/main/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactory.java +++ b/spring-boot/src/main/java/org/springframework/boot/context/embedded/jetty/JettyEmbeddedServletContainerFactory.java @@ -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); } diff --git a/spring-boot/src/main/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactory.java b/spring-boot/src/main/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactory.java index 51fa948a82..f3e17fcdb7 100644 --- a/spring-boot/src/main/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactory.java +++ b/spring-boot/src/main/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactory.java @@ -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); }