Spring에서 Scheduler가 두 번 도는 경우. 중복 실행
중복실행 되는 경우는 2개 임. (내 경험에서..)
톰캣의 server.xml에서
1. 한 개의 docBase를 두 개의 host가 바라보고 있는 경우.
2. 한 host에서 docBase나 appBase가 같은 곳을 바라보는 경우.
<Host name="www.호스트1.com" appBase="/project/폴더1/"
unpackWARs="true" autoDeploy="true">
<Alias>www.호스트1.com</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context docBase="앱명1" path="/" reloadable="true"/>
</Host>
<Host name="www.호스트2.com" appBase="/project/폴더2/"
unpackWARs="true" autoDeploy="true">
<Alias>www.호스트2.com</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context docBase="앱명1" path="/" reloadable="true"/>
</Host>
가끔 모든 서비스를 한 docBase에 넣고, 도메인만 따로 만들어서 쓰는 경우가 있었다. 그때 스케줄러가 두 번 돌았다.
그다음에
<Host name="www.호스트2.com" appBase="/project/폴더2/"
unpackWARs="true" autoDeploy="true">
<Alias>www.호스트2.com</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context docBase="앱명1" path="/" reloadable="true"/>
</Host>
여기서 docBase과 appBase가 같다.
그래서
appBase는 비우고, docBase만 남긴다. docBase에 war풀린 폴더 위치를 넣는다.
<Host name="www.호스트2.com" appBase=""
unpackWARs="true" autoDeploy="true">
<Alias>www.호스트2.com</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context docBase="/war풀린위치" path="/" reloadable="true"/>
</Host>