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
}
-
}
}