Develop

Spring Batch 실행 후 서버 내리는 방법, Jenkins Schedule 사용 시 서비스 관리 방법

에디개발자 2020. 11. 4. 12:22
반응형

Spring Batch도 만들었고 Jenkins 스케줄도 만들었으니 정상작동 테스트 진행하였습니다.

 

 

Jenkins에서 스케줄 돌고 정상 배포 완료! 라고 생각했으나 두 번째 스케줄부터 에러 발생. already port!! 

 

문제 원인은 너무나 당연한 것이었다. java -jar 로 배포하니 boot 내장 톰캣으로 기동하고 다음 스케줄이 돌 때까지 서비스가 살아있었던 것이었다. Spring batch 작업은 static main 메소드를 실행하면 내부에서 Job을 마무리하고 main 메소드도 마무리가 된다. 

 

그럼 static main 메소드에 프로세스 kill을 하면 되겠구나!

아래와 같은 소스 추가로 문제를 해결하였다.

public static void main(String[] args) {
        System.exit(SpringApplication
                .exit(SpringApplication.run(BatchApplication.class, args)));
    }

 

반응형