Update TomcatEmbeddedServletContainer so that Connectors are removed
during initialization and re-added when the start() method is called.
This prevent protocol handlers from being bound then immediately
unbound. It also ensure that any additional connectors that may have
been added don't accidentally start to accept traffic (which could cause
potential deadlock issues).
Fixes gh-1212
@ -47,6 +51,8 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer
@@ -47,6 +51,8 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer
@ -71,12 +77,25 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer
@@ -71,12 +77,25 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer
@ -87,16 +106,7 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer
@@ -87,16 +106,7 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer
}
}
}
try{
// Allow the server to start so the ServletContext is available, but stop
// the connector to prevent requests from being handled before the Spring
// context is ready:
Connectorconnector=this.tomcat.getConnector();
connector.getProtocolHandler().stop();
}
catch(Exceptionex){
this.logger.error("Cannot pause connector: ",ex);
}
// Unlike Jetty, all Tomcat threads are daemon threads. We create a
@ -120,6 +130,20 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer
@@ -120,6 +130,20 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer
@ -139,6 +163,19 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer
@@ -139,6 +163,19 @@ public class TomcatEmbeddedServletContainer implements EmbeddedServletContainer
@ -127,11 +131,16 @@ public class TomcatEmbeddedServletContainerFactoryTests extends
@@ -127,11 +131,16 @@ public class TomcatEmbeddedServletContainerFactoryTests extends