From 0c0a0a7738121229a2c470be0b6f8fd8e7061d27 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Thu, 28 Aug 2014 14:24:55 -0700 Subject: [PATCH] Convert session timeout to minutes for Tomcat Convert any session timeout values from seconds to minutes when configuring Tomcat. Fixes gh-1422 --- .../tomcat/TomcatEmbeddedServletContainerFactory.java | 8 +++++++- .../TomcatEmbeddedServletContainerFactoryTests.java | 11 +++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) 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 c77e75fe99..f7d8d6a943 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 @@ -25,6 +25,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; @@ -261,7 +262,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 6c0964491f..1d51a316c1 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 @@ -155,14 +155,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