
최근 회사에서 배치를 새로 등록해야하는 일이 생겼다. 문제는 그걸 해야할 사람이 나뿐이기때문에.
배치 내용은 수정해봤지만, 새로 등록하는 것은 처음이라 그 방법을 기록했다.
1.새로 쓸 batch를 구현 한 후 batch controller에 등록한다.
2.server-context.xml과 security-context.xml에 해당 url을 등록한다.
-> 스프링 부트의 경우 cofiguration에 허용 url을 등록하면 간단히 구현가능 하다.
3.서버에 반영한 후 crontab을 설정한다.
예시로, 배치를 구현 한 후 controller에 새로운 배치를 등록한다.
@RequestMapping(value = "/batchMSSQLData")
public void batchMSSQLData(ModelMap model, HttpServletRequest request, HttpServletResponse response) throws Exception{
batchService.batchMSSQLData();
}
현재 회사에서는 batch를 controller에 url을 달아 corntab으로 돌리고 있기 때문에 돌릴 URL을 설정한다.
처음에는 이 과정 없이 crobtab으로 바로 건너 뛰었더니 실행 로그도 없고,
아무런 반응이없어서 왜지?하고 검색하면서 찾아보니까
spring security와 intercepter를 사용하고 있기 때문에 추가로 설정이 필요했다.
로그인 하지 않은 사람이 허용되지 않은 페이지로 들어가게 되면 로그인 창이 뜨도록 되어있기 때문에
URL로 배치가 돌아가고 있어 security에 허용된 URL이라고 설정을 해줘야 했던 것이다.
회사에서는 intercepter를 사용하고 있었고 intercepter의 경우 server-context에 exclude-mapping에 해당 url을 추가해야했다.
<interceptors>
<interceptor>
<exclude-mapping path="/batchMSSQLData" />
</interceptor>
</interceptors>
그 다음 spring security 설정에도 url을 설정해주어야 했다.
security-context.xml에 seurity="none"을 추가했다. (스프링 시큐리티를 적용하지 않는다는 의미)
<http pattern="/batchMSSQLData" security="none"/>
해당 url들을 등록 한 후 운영 서버에 반영하였다.
리눅스에서 스케쥴러처럼 원하는 시간에 원하는 명령 또는 프로그램을 수행하도록 리스트를 만들어주는 것이 크론탭(crontab)이다.
크론탭 기본 사용법
// 크론탭 편집
crontab -e
// 크론탭 조회
crontab -l
// 크론탭 삭제 - 삭제시 전체 작업이 삭제됨
crontab -r
크론탭 내용 조회하면 아래처럼 뜬다.

crontab 편집 및 등록을 할때는 리눅스 vi 편집기를 사용해서 수정하니 사용법을 알아놓는 것이 좋다.
// 크론탭 시작
service cron start
// 크론탭 중지
service cron stop
// 작동확인
service cron status
// 크론탭 시작
service cron start
// 크론탭 중지
service cron stop
// 작동확인
service cron status
크론탭을 등록하거나 설정 변경 후 재시작을 해주어야 한다.
//크론탭 재시작
service cron restart
service crond restart
재시작된 크론탭을 확인한 후 데이터를 확인하면 설정 완료~
