[질문] Tomcat + Spring + Quartz 2번 실행됩니다.

1,922 views
Skip to first unread message

jaeger

unread,
Apr 2, 2010, 1:20:02 AM4/2/10
to Korea Spring User Group
안녕하세요.
jaeger입니다.

옥희 게시판이나 구글링이나 네이버 찾아보니까
이런 증상이 몇몇 있네요.

이거 봐도 잘 모르겠더라구요.
http://blog.ajkuhn.com/116

설정을 바꾸면서 막 해봤는데요.
톰캣 밑에 컨텍스트가 2개라서 2번 실행하는듯 합니다.

근데 컨텍스트를 삭제할수도 없는 노릇이구요.
혹시 방법을 아시는 분 있나요?

도움 좀 주세요.
굽신~ 굽신~

### 사용하고 있는 서버환경

톰캣 (server.xml)

<Host appBase="webapps">
<Context path="/server/tomcat/webapps/a" docBase="a">
<Context path="/server/tomcat/webapps/b" docBase="b">
</Host>

context root 밑에 context 가 2개가 있습니다.


스프링 2.5 (web.xml)

<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</
servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<listener>
<listener-
class>org.springframework.web.context.ContextLoaderListener</listener-
class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring_was.xml</param-value>
</context-param>


DispatcherServlet
ContextLoaderListener

위 2개를 사용하구요.


Quartz

SimpleTrigger
CronTrigger

2개를 사용하는데요.
어떤 트리거를 사용하던지 2번씩 동작하네요.

혹시 이런 경험 해본신적 있으신가요?


쿼츠 설정은 spring_was.xml 저기 들어있습니다.
그리고 web app(servlet)가 아니고 standalone 방식으로 api call 되게끔 jar로 제공하는 것으로 되
어 있습니다.

끝까지 읽어주셔서 감사합니다.

신승한

unread,
Apr 2, 2010, 3:32:32 AM4/2/10
to ks...@googlegroups.com
Quartz 를 실행하는 bean이 2개 생성된건 아닐까요?

생성자를 만들고 거기에 로그를 찍어서 한번 확인해 보시면 좋을거 같습니다.


2010년 4월 2일 오후 2:20, jaeger <fre...@gmail.com>님의 말:

--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.


sungchul park

unread,
Apr 2, 2010, 5:03:15 AM4/2/10
to ks...@googlegroups.com
두번이라는 게 각 컨텍스트에서 1회씩 총 2회 돌아간 다는 말씀이시죠?

두 서블릿 컨텍스트에 같은 애플리케이션이 돌아간다면 당연히 스케쥴링이 각각 돌아가서 같은 일이 중복 실행됩니다.

그렇게 돌아가서는 안 되는 일이라면 단순히 트리거가 발동했다고 잡을 작동시키기 보다 같은 작엄이 다른 스케쥴러에 의해 이미 작동하고 있는지 확인할 수 있는 로그성 데이터를 DB에 저장해 두어 이 DB 값을 기준으로 중복 작업 안 되도록 제어하시면 좋을 것 같습니다.

만약 해당 작업이 배치성 작업이라면 WAS에서 돌리지 말고 별도 프로세서로 돌리는 것도 방법일 듯 하고요.

프로그램을 바꾸지 않고 단순히 설정만으로 해결하는 법은 떠오르는 게 없네요.

2010/4/2 jaeger <fre...@gmail.com>
Reply all
Reply to author
Forward
0 new messages