Upgrade to Jetty 9.4.14.v20181114

Closes gh-15239
pull/16240/head
Andy Wilkinson 6 years ago
parent bb40e2ed24
commit aa9945c86c

@ -111,7 +111,7 @@
<jedis.version>2.9.0</jedis.version> <jedis.version>2.9.0</jedis.version>
<jersey.version>2.25.1</jersey.version> <jersey.version>2.25.1</jersey.version>
<jest.version>2.0.4</jest.version> <jest.version>2.0.4</jest.version>
<jetty.version>9.4.12.v20180830</jetty.version> <jetty.version>9.4.14.v20181114</jetty.version>
<jetty-jsp.version>2.2.0.v201112011158</jetty-jsp.version> <jetty-jsp.version>2.2.0.v201112011158</jetty-jsp.version>
<jetty-el.version>8.0.33</jetty-el.version> <jetty-el.version>8.0.33</jetty-el.version>
<jms-api.version>1.1-rev-1</jms-api.version> <jms-api.version>1.1-rev-1</jms-api.version>

@ -16,6 +16,7 @@
package org.springframework.boot.context.embedded.jetty; package org.springframework.boot.context.embedded.jetty;
import java.io.IOException;
import java.net.BindException; import java.net.BindException;
import java.util.List; import java.util.List;
@ -142,8 +143,9 @@ public class JettyEmbeddedServletContainer implements EmbeddedServletContainer {
try { try {
connector.start(); connector.start();
} }
catch (BindException ex) { catch (IOException ex) {
if (connector instanceof NetworkConnector) { if (connector instanceof NetworkConnector
&& findBindException(ex) != null) {
throw new PortInUseException( throw new PortInUseException(
((NetworkConnector) connector).getPort()); ((NetworkConnector) connector).getPort());
} }
@ -166,6 +168,16 @@ public class JettyEmbeddedServletContainer implements EmbeddedServletContainer {
} }
} }
private BindException findBindException(Throwable ex) {
if (ex == null) {
return null;
}
if (ex instanceof BindException) {
return (BindException) ex;
}
return findBindException(ex.getCause());
}
private String getActualPortsDescription() { private String getActualPortsDescription() {
StringBuilder ports = new StringBuilder(); StringBuilder ports = new StringBuilder();
for (Connector connector : this.server.getConnectors()) { for (Connector connector : this.server.getConnectors()) {

@ -18,7 +18,6 @@ package org.springframework.boot.context.embedded.jetty;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import org.eclipse.jetty.util.component.AbstractLifeCycle;
import org.eclipse.jetty.webapp.AbstractConfiguration; import org.eclipse.jetty.webapp.AbstractConfiguration;
import org.eclipse.jetty.webapp.Configuration; import org.eclipse.jetty.webapp.Configuration;
import org.eclipse.jetty.webapp.WebAppContext; import org.eclipse.jetty.webapp.WebAppContext;
@ -49,54 +48,35 @@ public class ServletContextInitializerConfiguration extends AbstractConfiguratio
@Override @Override
public void configure(WebAppContext context) throws Exception { 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);
* Jetty {@link AbstractLifeCycle} to call the {@link ServletContextInitializer
* ServletContextInitializers}.
*/
private class Initializer extends AbstractLifeCycle {
private final WebAppContext context;
Initializer(WebAppContext context) {
this.context = context;
} }
finally {
@Override Thread.currentThread().setContextClassLoader(classLoader);
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() throws ServletException { private void callInitializers(WebAppContext context) throws ServletException {
try { try {
setExtendedListenerTypes(true); setExtendedListenerTypes(context, true);
for (ServletContextInitializer initializer : ServletContextInitializerConfiguration.this.initializers) { for (ServletContextInitializer initializer : this.initializers) {
initializer.onStartup(this.context.getServletContext()); initializer.onStartup(context.getServletContext());
}
}
finally {
setExtendedListenerTypes(false);
} }
} }
finally {
private void setExtendedListenerTypes(boolean extended) { setExtendedListenerTypes(context, false);
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
}
} }
} }

Loading…
Cancel
Save