Commit abe3d385 authored by Andy Wilkinson's avatar Andy Wilkinson

Fix OoM error when starting Tomcat with max int load on startup

Fixes gh-17927
parent ab87b2a3
......@@ -71,8 +71,7 @@ class TomcatEmbeddedContext extends StandardContext {
Wrapper wrapper = (Wrapper) child;
int order = wrapper.getLoadOnStartup();
if (order >= 0) {
grouped.computeIfAbsent(order, ArrayList::new);
grouped.get(order).add(wrapper);
grouped.computeIfAbsent(order, (o) -> new ArrayList<>()).add(wrapper);
}
}
return grouped.values().stream().flatMap(List::stream);
......
......@@ -519,6 +519,21 @@ public class TomcatServletWebServerFactoryTests extends AbstractServletWebServer
() -> factory.getWebServer((context) -> context.addListener(new FailingServletContextListener())));
}
@Test
public void registerJspServletWithDefaultLoadOnStartup() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(0);
factory.addInitializers(new ServletContextInitializer() {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.addServlet("manually-registered-jsp-servlet", JspServlet.class);
}
});
this.webServer = factory.getWebServer();
this.webServer.start();
}
@Override
protected JspServlet getJspServlet() throws ServletException {
Tomcat tomcat = ((TomcatWebServer) this.webServer).getTomcat();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment