将web应用程序升级到Spring Boot 2.4后出现IllegalStateException



升级到Spring Boot 2.4后,我的web应用程序不再启动。它抛出以下错误:

Unable to locate the default servlet for serving static content. Please set the 'defaultServletName' property explicitly.

我正在使用以下代码来改变上下文路径,我的研究表明;罪犯;(更改上下文路径(:

@Bean
public ServletWebServerFactory servletContainer() 
{
String tomcatPort = environment.getProperty("tomcatPort");

TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
tomcat.setPort(tomcatPort != null ? Integer.parseInt(tomcatPort) : 8080);
tomcat.setContextPath("/Carbon");
tomcat.setBaseDirectory(new File(System.getenv("MDHIS3_HOME")));

setTomcatProtocol(tomcat);

return tomcat;
}

我有以下方法,我可以看到它可以用来传递defaultServlet名称,但我不知道应该传递什么值:

@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) 
{
configurer.enable();
}

这在Spring Boot 2.3.4上运行得很好。我在那里传递的值是多少?它是主控制器的名称吗?

如Spring Boot 2.4发行说明中所述,嵌入式Servlet容器提供的DefaultServlet在默认情况下不再注册。如果您的应用程序需要它,就像您的应用一样,您可以通过将server.servlet.register-default-servlet设置为true来启用它。

或者,您可以使用WebServerFactoryCustomizerbean:以编程方式对其进行配置

@Bean
WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> enableDefaultServlet() {
return (factory) -> factory.setRegisterDefaultServlet(true);
}

请注意,配置必须通过自定义程序应用,以便基于默认属性的配置不会覆盖它。

相关内容

  • 没有找到相关文章

最新更新