반응형

2020/11/04 3

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

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..

Develop 2020.11.04

org.springframework.dao.TransientDataAccessResourceException: Cannot change the ExecutorType when there is an existing transaction 해결방법!

Batch 프로젝트를 진행중에 아래와 같은 에러 발생하였습니다. Batch 삽질 삽질 삽질 에러 원인을 요약하자면 하나의 트랜잭션 안에서 다른 실행자를 사용할 수 없다라는 내용이다. 자세한 내용을 찾아보니 실행자 타입 문제였다. MybatisPagingItemReader는 실행자 BATCH를 사용하고 있었다. 참조 org.springframework.dao.TransientDataAccessResourceException: Cannot change the ExecutorType when there is an existing transaction 내가 만든 프로젝트는 Reader에서 MybatisPagingItemReader를 이용해 데이터를 조회하고 Processor에서도 Mapper를 통해 데이터를 조..

TroubleShooting 2020.11.04

Spring batch 스케줄 생성! [Jenkins]

이전글에서는 Spring Batch를 만들었습니다. 이번 글에서는 생성된 Spring Batch를 Jenkins로 스케줄 설정하여 실행시켜 보겠습니다. 이 글은 작성하기에 앞서 우아한 형제들 이동욱님의 티스토리를 참조하여 작성하였습니다. 다양한 방법 스케줄에도 다양한 방법이 있습니다. Linux Cron Quartz Cloud Serverless Spring Batch Admin CI Tool Choice 위처럼 다양한 방법이 있지만 CI Tool Jenkins를 사용하였습니다. Linux Cron : 정상적으로 배포했는지 어떻게 알지?? 로그 다 열어봐야하나.. Quartz : 스케쥴링 시간 변경할때마다 소스 수정하고 재배포하고 또 테스트 하고 싶으면 다시 수정하고 배포하고 또 수정하려면 배포하고 수정..

728x90
반응형