Special case for deferred start based on Handler type
Fixes gh-673
This commit is contained in:
parent
3ebaf11550
commit
78f8575850
|
|
@ -21,6 +21,7 @@ import org.apache.commons.logging.LogFactory;
|
|||
import org.eclipse.jetty.server.Connector;
|
||||
import org.eclipse.jetty.server.Handler;
|
||||
import org.eclipse.jetty.server.Server;
|
||||
import org.eclipse.jetty.server.handler.HandlerWrapper;
|
||||
import org.springframework.boot.context.embedded.EmbeddedServletContainer;
|
||||
import org.springframework.boot.context.embedded.EmbeddedServletContainerException;
|
||||
import org.springframework.util.Assert;
|
||||
|
|
@ -87,9 +88,7 @@ public class JettyEmbeddedServletContainer implements EmbeddedServletContainer {
|
|||
try {
|
||||
this.server.start();
|
||||
for (Handler handler : this.server.getHandlers()) {
|
||||
if (handler instanceof JettyEmbeddedWebAppContext) {
|
||||
((JettyEmbeddedWebAppContext) handler).deferredInitialize();
|
||||
}
|
||||
handleDeferredInitialize(handler);
|
||||
}
|
||||
Connector[] connectors = this.server.getConnectors();
|
||||
for (Connector connector : connectors) {
|
||||
|
|
@ -103,6 +102,15 @@ public class JettyEmbeddedServletContainer implements EmbeddedServletContainer {
|
|||
}
|
||||
}
|
||||
|
||||
private void handleDeferredInitialize(Handler handler) throws Exception {
|
||||
if (handler instanceof JettyEmbeddedWebAppContext) {
|
||||
((JettyEmbeddedWebAppContext) handler).deferredInitialize();
|
||||
}
|
||||
else if (handler instanceof HandlerWrapper) {
|
||||
handleDeferredInitialize(((HandlerWrapper) handler).getHandler());
|
||||
}
|
||||
}
|
||||
|
||||
private Integer getLocalPort(Connector connector) {
|
||||
try {
|
||||
// Jetty 9 internals are different, but the method name is the same
|
||||
|
|
|
|||
Loading…
Reference in New Issue