diff --git a/spring-boot-project/spring-boot-dependencies/pom.xml b/spring-boot-project/spring-boot-dependencies/pom.xml index 6e4e0bd399..a087e1d1f2 100644 --- a/spring-boot-project/spring-boot-dependencies/pom.xml +++ b/spring-boot-project/spring-boot-dependencies/pom.xml @@ -102,9 +102,15 @@ 7.6.0.Final 2.0.6 2.9.1 +<<<<<<< HEAD 2.27 6.3.1 9.4.12.v20180830 +======= + 2.26 + 5.3.4 + 9.4.14.v20181114 +>>>>>>> 2.0.x 2.2.0.v201112011158 8.5.35.1 1.0.2 diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyWebServer.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyWebServer.java index 5bb4f182f2..3e9fd5d922 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyWebServer.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyWebServer.java @@ -16,6 +16,7 @@ package org.springframework.boot.web.embedded.jetty; +import java.io.IOException; import java.net.BindException; import java.util.Arrays; import java.util.List; @@ -145,8 +146,9 @@ public class JettyWebServer implements WebServer { try { connector.start(); } - catch (BindException ex) { - if (connector instanceof NetworkConnector) { + catch (IOException ex) { + if (connector instanceof NetworkConnector + && findBindException(ex) != null) { throw new PortInUseException( ((NetworkConnector) connector).getPort()); } @@ -168,6 +170,16 @@ public class JettyWebServer implements WebServer { } } + private BindException findBindException(Throwable ex) { + if (ex == null) { + return null; + } + if (ex instanceof BindException) { + return (BindException) ex; + } + return findBindException(ex.getCause()); + } + private String getActualPortsDescription() { StringBuilder ports = new StringBuilder(); for (Connector connector : this.server.getConnectors()) { diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/ServletContextInitializerConfiguration.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/ServletContextInitializerConfiguration.java index c50dfeec99..f32f19de31 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/ServletContextInitializerConfiguration.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/ServletContextInitializerConfiguration.java @@ -18,7 +18,6 @@ package org.springframework.boot.web.embedded.jetty; import javax.servlet.ServletException; -import org.eclipse.jetty.util.component.AbstractLifeCycle; import org.eclipse.jetty.webapp.AbstractConfiguration; import org.eclipse.jetty.webapp.Configuration; import org.eclipse.jetty.webapp.WebAppContext; @@ -50,54 +49,35 @@ public class ServletContextInitializerConfiguration extends AbstractConfiguratio @Override public void configure(WebAppContext context) throws Exception { - context.addBean(new Initializer(context), true); + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + Thread.currentThread().setContextClassLoader(context.getClassLoader()); + try { + callInitializers(context); + } + finally { + Thread.currentThread().setContextClassLoader(classLoader); + } } - /** - * Jetty {@link AbstractLifeCycle} to call the {@link ServletContextInitializer - * ServletContextInitializers}. - */ - private class Initializer extends AbstractLifeCycle { - - private final WebAppContext context; - - Initializer(WebAppContext context) { - this.context = context; - } - - @Override - protected void doStart() throws Exception { - ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); - Thread.currentThread().setContextClassLoader(this.context.getClassLoader()); - try { - callInitializers(); - } - finally { - Thread.currentThread().setContextClassLoader(classLoader); + private void callInitializers(WebAppContext context) throws ServletException { + try { + setExtendedListenerTypes(context, true); + for (ServletContextInitializer initializer : this.initializers) { + initializer.onStartup(context.getServletContext()); } } - - private void callInitializers() throws ServletException { - try { - setExtendedListenerTypes(true); - for (ServletContextInitializer initializer : ServletContextInitializerConfiguration.this.initializers) { - initializer.onStartup(this.context.getServletContext()); - } - } - finally { - setExtendedListenerTypes(false); - } + finally { + setExtendedListenerTypes(context, false); } + } - private void setExtendedListenerTypes(boolean extended) { - try { - this.context.getServletContext().setExtendedListenerTypes(extended); - } - catch (NoSuchMethodError ex) { - // Not available on Jetty 8 - } + private void setExtendedListenerTypes(WebAppContext context, boolean extended) { + try { + context.getServletContext().setExtendedListenerTypes(extended); + } + catch (NoSuchMethodError ex) { + // Not available on Jetty 8 } - } }