Fix OoM error when starting Tomcat with max int load on startup
Fixes gh-17927
This commit is contained in:
parent
ab87b2a39b
commit
abe3d38527
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue