Skip to content

Commit 0c0a0a7

Browse files
committed
Convert session timeout to minutes for Tomcat
Convert any session timeout values from seconds to minutes when configuring Tomcat. Fixes gh-1422
1 parent a07f027 commit 0c0a0a7

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

spring-boot/src/main/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactory.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.Arrays;
2626
import java.util.Collection;
2727
import java.util.List;
28+
import java.util.concurrent.TimeUnit;
2829

2930
import javax.servlet.ServletContainerInitializer;
3031
import javax.servlet.ServletContext;
@@ -261,7 +262,12 @@ protected void configureContext(Context context,
261262
for (MimeMappings.Mapping mapping : getMimeMappings()) {
262263
context.addMimeMapping(mapping.getExtension(), mapping.getMimeType());
263264
}
264-
context.setSessionTimeout(getSessionTimeout());
265+
long timeout = getSessionTimeout();
266+
if (timeout > 0) {
267+
// Tomcat timeouts are in minutes
268+
timeout = Math.max(TimeUnit.SECONDS.toMinutes(timeout), 1L);
269+
}
270+
context.setSessionTimeout((int) timeout);
265271
for (TomcatContextCustomizer customizer : this.tomcatContextCustomizers) {
266272
customizer.customize(context);
267273
}

spring-boot/src/test/java/org/springframework/boot/context/embedded/tomcat/TomcatEmbeddedServletContainerFactoryTests.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,14 +155,21 @@ public void addNullAdditionalConnectorThrows() {
155155
public void sessionTimeout() throws Exception {
156156
TomcatEmbeddedServletContainerFactory factory = getFactory();
157157
factory.setSessionTimeout(10);
158-
assertTimeout(factory, 10);
158+
assertTimeout(factory, 1);
159159
}
160160

161161
@Test
162162
public void sessionTimeoutInMins() throws Exception {
163163
TomcatEmbeddedServletContainerFactory factory = getFactory();
164164
factory.setSessionTimeout(1, TimeUnit.MINUTES);
165-
assertTimeout(factory, 60);
165+
assertTimeout(factory, 1);
166+
}
167+
168+
@Test
169+
public void noSessionTimeout() throws Exception {
170+
TomcatEmbeddedServletContainerFactory factory = getFactory();
171+
factory.setSessionTimeout(0);
172+
assertTimeout(factory, -1);
166173
}
167174

168175
@Test

0 commit comments

Comments
 (0)