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 0d4493a47c..b138509467 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 @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; +import java.util.concurrent.TimeUnit; import javax.servlet.ServletContainerInitializer; import javax.servlet.ServletContext; @@ -331,7 +332,12 @@ public class TomcatEmbeddedServletContainerFactory extends for (MimeMappings.Mapping mapping : getMimeMappings()) { context.addMimeMapping(mapping.getExtension(), mapping.getMimeType()); } - context.setSessionTimeout(getSessionTimeout()); + long timeout = getSessionTimeout(); + if (timeout > 0) { + // Tomcat timeouts are in minutes + timeout = Math.max(TimeUnit.SECONDS.toMinutes(timeout), 1L); + } + context.setSessionTimeout((int) timeout); for (TomcatContextCustomizer customizer : this.tomcatContextCustomizers) { customizer.customize(context); } diff --git a/spring-boot/src/test/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactoryTests.java b/spring-boot/src/test/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactoryTests.java index 60fe6090ce..a5071c61f8 100644 --- a/spring-boot/src/test/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactoryTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactoryTests.java @@ -157,14 +157,21 @@ public class TomcatEmbeddedServletContainerFactoryTests extends public void sessionTimeout() throws Exception { TomcatEmbeddedServletContainerFactory factory = getFactory(); factory.setSessionTimeout(10); - assertTimeout(factory, 10); + assertTimeout(factory, 1); } @Test public void sessionTimeoutInMins() throws Exception { TomcatEmbeddedServletContainerFactory factory = getFactory(); factory.setSessionTimeout(1, TimeUnit.MINUTES); - assertTimeout(factory, 60); + assertTimeout(factory, 1); + } + + @Test + public void noSessionTimeout() throws Exception { + TomcatEmbeddedServletContainerFactory factory = getFactory(); + factory.setSessionTimeout(0); + assertTimeout(factory, -1); } @Test