문제 : spring boot - 외장 톰캣 실행시 @schedule 어노테이션 사용시 스케쥴러가 두번 도는 문제 발생
해결 :
tomcat의 server.xml 설정을 수정한다.
<host appBase="webapp">
<Context docBase="test">
appBase : 여러 webapp이 들어가는 부모 디렉토리
docBase : 실제로 동작하는 프로젝트 디렉토리
--> 위 경로로 실행후 /test 폴더가 생성되면
appbase="webapp/test"
docBase="/"
로 수정하여 하나만 실행될 수 있도록 한다.
----------------------------------------------------------------
해결 -----
톰켓 설정문제에는 이상이 없었고
application.java 와 servletInitalizer.java에서 각각 서블릿을 생성하여 두개의 배치가 돌고있던 문제였다.
서블릿 이니셜라이저를 모두 주석처리 하고 문제해결.
springBootServletInitialzer을 상속해야하는 이유
- boot를 사용하고 외장 톰캣으로 배포할 경우, 톰캣이 프로젝트 내 web.xml을 읽어야하는데,
부트에는 property에 모든 설정이 들어가있다. 따라서 스프링부트서블릿이니셜라이저를 상속한 서블릿이 대신 그 역할을 하게 된다.
https://serverwizard.tistory.com/165
SpringBootServletInitializer 란 무엇이고 왜 상속받고 있는가?
주제 선정 이유 아래 소스는, 현재 담당하고 있는 서비스의 코드를 그대로 가져온 것이다. @SpringBootApplication public class SuperApplication extends SpringBootServletInitializer { public static void ma..
serverwizard.tistory.com
https://okky.kr/article/431587
OKKY | Spring boot + tomcat 8.5 실행시 중복로딩 질문입니다. (추가)
Scheduled 어노테이션 사용시 두번씩 일어나서 현재 문제입니다. 검색을 해서보니 두번 실행되는 경우가 엄청 많은대 크게보니.. 1. Spring boot 설정문제 2. tomcat 설정문제 이렇게 두가지가 있는걸로
okky.kr
[Knowledge] Tomcat 배포시 스케쥴러 중복 실행 해결방안
상황 본인은 local - eclipse 환경에서는 데몬을 띄웠을때 문제없이 하나만 실행됬었는데 본 프로젝트를 war로 배포했을때 데몬이 중복되어 2개가 실행되었다. Tomcat이 webapps에서 한번 실행시키고, tes
zara49.tistory.com
https://velog.io/@kwj2435/Spring-Boot-ServletInitializer
[Spring Boot] ServletInitializer
스프링부트 war 프로젝트 생성시 SpringBootServletInitializer를 상속받는 ServletInitializer 클래스 파일이 생성된다.해당 파일의 용도는 무엇일까?스프링 부트 웹 애플리케이션을 배포할 때 jar를 이용하기
velog.io
'Spring' 카테고리의 다른 글
스프링 시큐리티 기본 + 구현 (0) | 2024.11.23 |
---|---|
메이븐 빌드오류 해결 (0) | 2024.07.19 |
webFlux, mongodb-reactive 이해하기 (0) | 2023.08.21 |
파일 입출력 구현 (0) | 2022.02.15 |
댓글