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 ce3910adeb7..ef914ca869a 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 @@ -361,7 +361,7 @@ public class UndertowEmbeddedServletContainerFactory File dir = getValidSessionStoreDir(); deployment.setSessionPersistenceManager(new FileSessionPersistence(dir)); } - DeploymentManager manager = Servlets.defaultContainer().addDeployment(deployment); + DeploymentManager manager = Servlets.newContainer().addDeployment(deployment); manager.deploy(); SessionManager sessionManager = manager.getDeployment().getSessionManager(); int sessionTimeout = (getSessionTimeout() > 0 ? getSessionTimeout() : -1); diff --git a/spring-boot/src/test/java/org/springframework/boot/context/embedded/undertow/UndertowEmbeddedServletContainerFactoryTests.java b/spring-boot/src/test/java/org/springframework/boot/context/embedded/undertow/UndertowEmbeddedServletContainerFactoryTests.java index f393b2a2459..a06904b875b 100644 --- a/spring-boot/src/test/java/org/springframework/boot/context/embedded/undertow/UndertowEmbeddedServletContainerFactoryTests.java +++ b/spring-boot/src/test/java/org/springframework/boot/context/embedded/undertow/UndertowEmbeddedServletContainerFactoryTests.java @@ -26,6 +26,7 @@ import java.util.concurrent.atomic.AtomicReference; import io.undertow.Undertow.Builder; import io.undertow.servlet.api.DeploymentInfo; import io.undertow.servlet.api.DeploymentManager; +import io.undertow.servlet.api.ServletContainer; import org.junit.Test; import org.mockito.InOrder; @@ -39,6 +40,8 @@ import org.springframework.http.HttpStatus; import org.springframework.test.util.ReflectionTestUtils; import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.not; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.mockito.Matchers.anyObject; @@ -163,11 +166,24 @@ public class UndertowEmbeddedServletContainerFactoryTests assertForwardHeaderIsUsed(factory); } + @Test + public void eachFactoryUsesADiscreteServletContainer() { + assertThat(getServletContainerFromNewFactory(), + is(not(equalTo(getServletContainerFromNewFactory())))); + } + @Override protected Object getJspServlet() { return null; // Undertow does not support JSPs } + private ServletContainer getServletContainerFromNewFactory() { + UndertowEmbeddedServletContainer undertow1 = (UndertowEmbeddedServletContainer) getFactory() + .getEmbeddedServletContainer(); + return ((DeploymentManager) ReflectionTestUtils.getField(undertow1, "manager")) + .getDeployment().getServletContainer(); + } + @Override protected Map getActualMimeMappings() { return ((DeploymentManager) ReflectionTestUtils.getField(this.container,