Merge branch '2.0.x'
This commit is contained in:
@@ -223,6 +223,7 @@ public class JettyServletWebServerFactory extends AbstractServletWebServerFactor
|
||||
Configuration[] configurations = getWebAppContextConfigurations(context,
|
||||
initializersToUse);
|
||||
context.setConfigurations(configurations);
|
||||
context.setThrowUnavailableOnStartupException(true);
|
||||
configureSession(context);
|
||||
postProcessWebAppContext(context);
|
||||
}
|
||||
|
||||
@@ -107,7 +107,7 @@ public class JettyWebServer implements WebServer {
|
||||
this.server.start();
|
||||
this.server.setStopAtShutdown(false);
|
||||
}
|
||||
catch (Exception ex) {
|
||||
catch (Throwable ex) {
|
||||
// Ensure process isn't left running
|
||||
stopSilently();
|
||||
throw new WebServerException("Unable to start embedded Jetty web server",
|
||||
|
||||
@@ -20,9 +20,13 @@ import java.net.InetAddress;
|
||||
import java.nio.charset.Charset;
|
||||
import java.time.Duration;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.servlet.ServletContextEvent;
|
||||
import javax.servlet.ServletContextListener;
|
||||
|
||||
import org.apache.jasper.servlet.JspServlet;
|
||||
import org.eclipse.jetty.server.Connector;
|
||||
import org.eclipse.jetty.server.Handler;
|
||||
@@ -41,6 +45,7 @@ import org.mockito.InOrder;
|
||||
|
||||
import org.springframework.boot.web.server.PortInUseException;
|
||||
import org.springframework.boot.web.server.Ssl;
|
||||
import org.springframework.boot.web.server.WebServerException;
|
||||
import org.springframework.boot.web.servlet.server.AbstractServletWebServerFactory;
|
||||
import org.springframework.boot.web.servlet.server.AbstractServletWebServerFactoryTests;
|
||||
|
||||
@@ -296,6 +301,42 @@ public class JettyServletWebServerFactoryTests
|
||||
.isEqualTo(localhost.getHostAddress());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void faultyListenerCausesStartFailure() throws Exception {
|
||||
JettyServletWebServerFactory factory = getFactory();
|
||||
factory.addServerCustomizers(new JettyServerCustomizer() {
|
||||
|
||||
@Override
|
||||
public void customize(Server server) {
|
||||
Collection<WebAppContext> contexts = server.getBeans(WebAppContext.class);
|
||||
contexts.iterator().next().addEventListener(new ServletContextListener() {
|
||||
|
||||
@Override
|
||||
public void contextInitialized(ServletContextEvent sce) {
|
||||
throw new RuntimeException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void contextDestroyed(ServletContextEvent sce) {
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
this.thrown.expect(WebServerException.class);
|
||||
JettyWebServer jettyWebServer = (JettyWebServer) factory.getWebServer();
|
||||
try {
|
||||
jettyWebServer.start();
|
||||
}
|
||||
finally {
|
||||
QueuedThreadPool threadPool = (QueuedThreadPool) jettyWebServer.getServer()
|
||||
.getThreadPool();
|
||||
assertThat(threadPool.isRunning()).isFalse();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JspServlet getJspServlet() throws Exception {
|
||||
WebAppContext context = (WebAppContext) ((JettyWebServer) this.webServer)
|
||||
|
||||
Reference in New Issue
Block a user