diff --git a/spring-boot/src/main/java/org/springframework/boot/context/embedded/undertow/UndertowEmbeddedServletContainerFactory.java b/spring-boot/src/main/java/org/springframework/boot/context/embedded/undertow/UndertowEmbeddedServletContainerFactory.java index 916b93b3f46..5d8c12756ac 100644 --- a/spring-boot/src/main/java/org/springframework/boot/context/embedded/undertow/UndertowEmbeddedServletContainerFactory.java +++ b/spring-boot/src/main/java/org/springframework/boot/context/embedded/undertow/UndertowEmbeddedServletContainerFactory.java @@ -31,6 +31,7 @@ import io.undertow.servlet.api.DeploymentInfo; import io.undertow.servlet.api.DeploymentManager; import io.undertow.servlet.api.ListenerInfo; import io.undertow.servlet.api.MimeMapping; +import io.undertow.servlet.api.ServletSessionConfig; import io.undertow.servlet.api.ServletStackTraces; import io.undertow.servlet.handlers.DefaultServlet; import io.undertow.servlet.util.ImmediateInstanceFactory; @@ -68,6 +69,7 @@ import org.springframework.core.io.ResourceLoader; import org.springframework.util.Assert; import org.springframework.util.ResourceUtils; import org.springframework.util.SocketUtils; +import org.springframework.util.StringUtils; import org.xnio.Options; import org.xnio.SslClientAuthMode; @@ -329,6 +331,12 @@ public class UndertowEmbeddedServletContainerFactory extends deployment.setServletStackTraces(ServletStackTraces.NONE); deployment.setResourceManager(getDocumentRootResourceManager()); configureMimeMappings(deployment); + if (StringUtils.isEmpty(getContextPath())) { + // Work around UNDERTOW-350 + ServletSessionConfig servletSessionConfig = new ServletSessionConfig(); + servletSessionConfig.setPath("/"); + deployment.setServletSessionConfig(servletSessionConfig); + } for (UndertowDeploymentInfoCustomizer customizer : this.deploymentInfoCustomizers) { customizer.customize(deployment); }