반응형
웹 앱을 Spring Boot 2.4로 업그레이드한 후 잘못된 StateException
Spring Boot 2.4로 업그레이드한 후 웹 앱이 더 이상 시작되지 않습니다.다음 오류가 발생하고 있습니다.
Unable to locate the default servlet for serving static content. Please set the 'defaultServletName' property explicitly.
저는 다음 코드를 사용하여 컨텍스트 경로를 변경하고 있으며, 제 연구는 그것이 "culprit"(컨텍스트 경로 변경)임을 지적합니다.
@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;
}
다음 방법을 사용하여 defaultServletName을 전달할 수 있지만 전달해야 할 값이 무엇인지 알 수 없습니다.
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer)
{
configurer.enable();
}
이것은 Spring Boot 2.3.4에서 완벽하게 작동했습니다.제가 거기서 어떤 가치를 전달하나요?메인 컨트롤러 이름인가요?
Spring Boot 2.4 릴리즈 노트에 설명된 바와 같이,DefaultServlet
내장된 서블릿 컨테이너에서 제공하는 것은 더 이상 기본적으로 등록되지 않습니다.응용 프로그램에 필요한 경우 프로그램에 필요한 것처럼 다음을 설정하여 활성화할 수 있습니다.server.servlet.register-default-servlet
로.true
.
또는 를 사용하여 프로그래밍 방식으로 구성할 수 있습니다.WebServerFactoryCustomizer
콩:
@Bean
WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> enableDefaultServlet() {
return (factory) -> factory.setRegisterDefaultServlet(true);
}
기본 속성 기반 구성이 덮어쓰지 않도록 커스터마이저를 통해 구성을 적용해야 합니다.
언급URL : https://stackoverflow.com/questions/64822250/illegalstateexception-after-upgrading-web-app-to-spring-boot-2-4
반응형
'programing' 카테고리의 다른 글
Spring boot 응용 프로그램의 사용자 지정 오류 페이지로 리디렉션하는 중 오류 발생 (0) | 2023.07.22 |
---|---|
Oracle DELETE 성능 향상 전략 (0) | 2023.07.22 |
이 코드의 의미는 무엇입니까?void(*int sig, void(*func)(int))(int); (0) | 2023.07.22 |
Pandas Data Frame에서 음수를 0으로 대체하는 방법 (0) | 2023.07.22 |
ORA-00997에 대한 해결 방법: LONG 데이터 유형의 잘못된 사용 (0) | 2023.07.22 |