Knowledge

[Knowledge] Tomcat 배포시 스케쥴러 중복 실행 해결방안

Jeong Jeon
반응형

상황

본인은 local - eclipse 환경에서는 데몬을 띄웠을때 문제없이 하나만 실행됬었는데

본 프로젝트를 war로 배포했을때 데몬이 중복되어 2개가 실행되었다.

Tomcat이 webapps에서 한번 실행시키고, 

test프로젝트 war를 unpackaging 할때 한번더 실행한다고한다.

그렇다고 프로젝트가 이중으로 뜨는것은 아니다! 두번 띄워지지만 둘중 하나는 죽게 되지만

스케쥴러는 죽지않는다고 한다..! 조금더 자세히 조사해봐야겠다.

 

해결

Tomcat에 conf폴더에 보면 server.xml 파일이 있다.
server.xml 파일을 열어보면 Host 쪽에 docBase, appBase가 있는것을 볼수 있다.

<Host name="localhost"  appBase="webapps/" unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="test" reloadable="true"/>

 

대략 이런식..

 

  • appBase : 여러 webapp들이 들어가는 부모 디렉토리
  • docBase : 실제로 동작하는 프로젝트 디렉토리

    아래와 같이 바꾸면 Tomcat 환경 설정으로 중복실행되는 스케줄러를 해결 할 수 있다.

위처럼 설정 한뒤 tomcat을 실행하여 첫번쨰 Unpackaging을 한다.

Tomcat을 다시 끄고,  아래와 같이 바꾼뒤 다시 Tomcat 실행.

<Host name="localhost"  appBase="webapps/test" unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="" reloadable="true"/>

한번 Unpackaging을 해서 Tomcat이 webapps 안에 test폴더하나만 만들게 한뒤, Root으로 다시 변경해서 잡아주는 방식이다.

 

다른 방식은 차차 알아봐야지...

반응형