레이블이 schedule인 게시물을 표시합니다. 모든 게시물 표시
레이블이 schedule인 게시물을 표시합니다. 모든 게시물 표시

2018년 9월 11일 화요일

Spring 어플리케이션을 톰캣에 배포 하였을때 schedule 이 중복 실행 되는 현상

톰캣에 Spring 어플리케이션을 배포해서 서비스 하는 경우 schedule 이 중복되어 실행 되는 현상이 발생하는 경우가 있습니다.

이런 경우는 보통 어플리케이션이 이중으로 로딩되어 발생하는 현상입니다.

tomcat 의  server.xml 설정시에 Host 설정에 appBase 속성을  설정하고 배포한 어플리케이션을  appBase 폴더 아래에 위치 시켜서 Context 설정을 하게 되면 Tomcat 이 어플리케이션을 이중으로 로딩하게 됩니다.

아래와 같이 server.xml 을 설정 하게 되면  배포한 appTest 어플리케이션이
Host의 appbase 설정에 따라서 /appTest 로 배포 하고
또 context  설정에 따라서 /로 배포 하게 되어 이중으로 로딩하는 문제가 발생 하게 됩니다.

    <Host name="localhost"  appBase="/home/user/tomcat/webapps" unpackWARs="true" autoDeploy="false" >
        <Context path="/appTest" docBase=“app1" reloadable="true" />
    </Host>

이런 경우 소스를 appbase 아래가 아닌 다른곳에 설치 하거나 host 속성에 기동시에 appbase 아래의 어플리케이션을 배포 하지 않도록 아래 처럼 deployOnStartup 을 false로 설정을 해주면 됩니다.

    <Host name="localhost"  appBase="/home/user/tomcat/webapps" unpackWARs="true" autoDeploy="false" deployOnStartup="false">
        <Context path="/appTest" docBase=“app1" reloadable="true" />
    </Host>