복붙노트

[SPRING] ApplicationContextException : ServletWebServerFactory 빈이 없어서 ServletWebServerApplicationContext를 시작할 수 없습니다.

SPRING

ApplicationContextException : ServletWebServerFactory 빈이 없어서 ServletWebServerApplicationContext를 시작할 수 없습니다.

스프링 부트를 사용하여 스프링 배치 애플리케이션을 작성했습니다. 로컬 시스템에서 명령 행과 클래스 경로를 사용하여 해당 애플리케이션을 실행하려고하면 정상적으로 실행됩니다. 그러나 리눅스 서버에서 실행하려고했을 때 예외적으로 다음과 같이 표시됩니다.

Unable to start web server; nested exception is
org.springframework.context.ApplicationContextException: 
Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.

아래는 내가 그것을 실행하는 방법입니다 :

java -cp jarFileName.jar; lib\* -Dlogging.level.org.springframework=DEBUG -Dspring.profiles.active=dev -Dspring.batch.job.names=abcBatchJob com.aa.bb.StartSpringBatch > somelogs.log

해결법

  1. ==============================

    1.application.properties에서 다음을 수행합니다.

    application.properties에서 다음을 수행합니다.

    spring.main.web-application-type=none
    

    application.yml을 사용하는 경우 다음을 추가하십시오.

      spring:
        main:
          web-application-type: none
    
    @SpringBootApplication
    public class YourAppliationName extends SpringBootServletInitializer{
        public static void main(String[] args) {
            SpringApplication.run(YourAppliationName.class, args);
        }
    }
    
  2. ==============================

    2.해결책은 다음과 같습니다.

    해결책은 다음과 같습니다.

    application.yml 파일에서 below 속성을 none으로 명시 적으로 설정했습니다.

    spring:
      main:
        web-application-type: none
    
  3. ==============================

    3.pom.xml의 spring-boot-startter-parent를 최신 버전으로 업그레이드하면 해결됩니다.

    pom.xml의 spring-boot-startter-parent를 최신 버전으로 업그레이드하면 해결됩니다.

  4. ==============================

    4.스프링 부트로 마이그레이션하는 동안이 문제가 발생했습니다. 의존성을 제거하는 조언을 찾았습니다. 그래서 jsp-api 프로젝트의 의존성을 제거했습니다. 또한 servlet-api 종속성도 제거해야합니다.

    스프링 부트로 마이그레이션하는 동안이 문제가 발생했습니다. 의존성을 제거하는 조언을 찾았습니다. 그래서 jsp-api 프로젝트의 의존성을 제거했습니다. 또한 servlet-api 종속성도 제거해야합니다.

    compileOnly group: 'javax.servlet.jsp', name: 'jsp-api', version: '2.2' 
    
  5. ==============================

    5.내 IDE (IntelliJ) 내에서보다는 뚱뚱한 항아리로 내 웹 응용 프로그램을 실행하려면 attempint 때이 문제가 발생했습니다.

    내 IDE (IntelliJ) 내에서보다는 뚱뚱한 항아리로 내 웹 응용 프로그램을 실행하려면 attempint 때이 문제가 발생했습니다.

    이것이 나를 위해 일한 것입니다. application.properties 파일에 기본 프로파일을 추가하기 만하면됩니다.

    spring.profiles.active=default
    

    다른 특정 프로파일 (dev / test / prod)을 이미 설정 한 경우 기본값을 사용할 필요가 없습니다. 하지만 그렇지 않다면 뚱뚱한 항아리로 응용 프로그램을 실행하는 데 필요합니다.

  6. ==============================

    6.아마도 스프링 부트 스타터 클래스에 @SpringBootApplication이 없습니다.

    아마도 스프링 부트 스타터 클래스에 @SpringBootApplication이 없습니다.

    @SpringBootApplication
    public class LoginSecurityAppApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(LoginSecurityAppApplication.class, args);
        }
    
    }
    
  7. from https://stackoverflow.com/questions/50231736/applicationcontextexception-unable-to-start-servletwebserverapplicationcontext by cc-by-sa and MIT license