序.
로컬에서의 테스트에서는 극히 정상적으로 quartz스케쥴러가 작동하였고, 이를 테스트서버와 실서버로 옮겼을때는 동시에 두번씩 동작하는 문제가 발생했다.
세 서버의 Tomcat/Spring/Quartz의 버전은 완전히 동일...

1. 일단 큰 차이랄 수있는 OS/JVM의 차이를 의심하였다. 구글링을 해보니 비슷한 증상(윈도우 정상작동, 리눅스 스테이징으로 옮기니 발생)인 사람들을 여럿 발견... 희망이 보이기 시작....

벗뜨.. 이런 얘기한 사람들은 다 답을 얻지 못함...

2. 다음은 Spring 혹은 Quartz의 버그를 의심.
Spring + Quartz의 조합으로 비슷한 증상을 호소한 사람들이 미쿡(= 영어였다는 얘기다;;;)에는 꽤 많았다...
이는 web.xml에서 Spring의 ContextLoader가 중복호출되어 복수의 Quartz인스탄스가 생겨 발생하는 경우였다. 웹어플리케이션 상에서 둘 이상의 Listener or Servlet을 등록때 하나의 context정보 파일을 두 번 이상 부를 수 있는 경우가 있다는 것이다.

webapp의 lifecycle과 Spring의 Bean생성 과정을 자세하게 알지 못하면 쉽게 할 수 있는 실수였다... 드디어 찾았구나~ 하고 좋아했다...
 
근데...

이 경우라면 로컬에서는 이상없는 것이 설명되지 않았다...
로컬에서 이상이 없는 이유를 찾느라 한참을 소비해야했다...

결론적으로... 내 경우의 Spring설정은 완벽했다;;;

3. 처음부터 서버 설정을 크게 의심하지 않은 것은, 테스트 서버와 실서버가 모두 잘 돌고 있었기 때문이다. 또한 설정파일 역시 모두 공유해서 사용하고 있었기 때문에 시야를 벗어나는 좋은 이유가 되었다. 처음부터 톰캣 인스탄스가 2개인것은 의심해 보았다. 2개가 떠있어서 하나는 포트를 못열고 놀고만 있는... 그러나 스케줄러는 작동되고 있는... 하지만 이것에 해당하지는 않았다.

유일하게 공유되고 있지 않은 설정파일인 톰캣의 server.xml파일을 열어봤다...

....
<Host name="localhost" appBase="/tomcat/webapps"
    unpackWARs="true" autoDeploy="false"
    xmlValidation="false" xmlNamespaceAware="false">
    <Context path="" docBase="/tomcat/webapps/test" reloadable="false" />
</Host>
....

뭔가 감이 왔다;

그렇다, Host의 appBase는 여러 webapp들이 들어갈 母 디렉토리다. 즉, 이하의 디렉토리는 webapp의 자격조건을 가지고 있으면 자동으로 webapp로 구동되는 것이다.
Context는 이와는 별도로 webapp의 위치를 직접 지정가능하다.

결국 위의 설정은 두개의 'test' webapp를 구동하도록 만들었다. 스케쥴러도 두개가 뜬것이다.

Tomcat에서 동일한 Web Application Context 두 개가 뜬다한들 작동에는 별 문제가 없을 것이다. 둘의 ContextPath가 다르다면 말이다. 위의 경우 Host에서는 "test"라는 ContextPath로 webapp가 떴을 것이고, Context에서는 지정한대로 ""(=루트) ContextPath로 떴으니 아무런 문제가 없었던 건이다.

여튼 Tomcat설정시 Host의 appBase위에 Context로 설정할 app를 올리지 말아야한다. 이는 의도하지않은 작동을 야기한다. 본인은 다양한 이유로 appBase의 위치를 바꾸는 방법을 택했다.

結.
Quartz의 스케쥴러가 이중작동하는경우(굳이 이러한 경우가 아니더라도, 서버구동시 한번만 실행되도록 했는데 두번 실행되는 모든 경우).....

우선 Spring을 사용하는 경우는 Spring설정에 주의를 기울여라. Spring이 인스탄스의 라이프사이클을 제어하는 경우가 많아서, 개발자가 미처 인지하지 못하는 사이 인스탄스화가 일어날 수 있다. 구체적인 사례는 여기를 참조한다.

이게 아니라면 Container의 라이프사이클을 의심하라. 혹시 프로세스가 두개가 뜨지는 않았는지... 프로세스는 하나지만 복수의 Context를 구동하게 되지는 않았는지... 이 모든 것은 Container의 설정으로 해결해야 할 것이다. 1번의 경우(OS, JVM의심)도 결국 이러한 상황이었던 것으로 보인다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by A.J.Kuhn
북적댔던 정모 때는 당연히 많이 찍히지 못했지만, 전날 부터 참석한 덕에 카메라 마사지를 꽤나 받았다... 엄청단 속도로 라이딩하면서도 이 정도 사진과 영상을 찍어낸 여유만만님도 참 대단...

왜 자꾸 V자를 그리는걸까 ㅡ.ㅡ;;;


아주 맘에 드는 연속컷.. 요즘들어 힐턴사진이 잘 나온다..


일본식으로 바꾼 롱카빙의 토우턴 자세.. 아직은 미숙하다.
팔로 얼굴을 보호할 수 있다는 안도감만으로 인클리네이션과
앵귤레이션이 과감해 질 수 있다.


너무 많은 V를 남발하여 한소리 들었다 ㅡ.ㅡ;;


데크를 바꾼 후론 알리가 잘된다.. 점점 고속에서도 가능해지고 있다..


후훗.. 역시 보호대가 보여야 간지다!


힐턴에서 토우턴까지의 연속컷...
여전히 손가락 관리가 안된다;;; 집게로 뭔가 집으려는 걸까?


예전에는 팔 각도에 불만이 많았는데...
요즘은 그냥 그러려니 한다..


슬라이딩턴과 숏턴에서는 여전히 CASI스타일을 고수하고 있다.


많은 사람들이 극찬한 사진!
고요속에 나의 라이딩만으로 채워졌다.


 

All photo/video/edit by 여유만만

이 장소를 Daum지도에서 확인해보세요.
강원도 평창군 봉평면 | 휘닉스파크
도움말 Daum 지도
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by A.J.Kuhn
잭 웰치 위대한 승리
카테고리 경제/경영
지은이 잭 웰치 (청림출판, 2005년)
상세보기

그간 쌓아온 업적과 통찰력으로 말미암아, 거리낌없이 자기 생각을 말할 수 있는 권리를 부여받은 몇 안되는 경영자.

책의 내용은 그가 CEO생활을 접고 전세계로 강연을 다니면서 받은 질문들에 대한 답이다. 이러한 질답을 카테고리화하고 하나의 흐름으로 편집하여 내놓은 책이다.

확실히 옛(?) 경영자라 할 수 있는 그 이기에, 요즈음 세태로 보면 다소 보수적인 느낌을 받을 수도 있고 거부감을 가질 사람도 있을 듯 하다. 그러나 이러한 그의 성향을 뛰어넘는 통찰을 느낄 수 있다. 자신이 CEO라 생각하며 찬찬히 읽어본다면 그의 혜안에 감동하게 될 것이다. 그는 단순히 기업의 이익을 위해 뛰는 CEO의 레벨을 예전에 넘어선 자다.

일반 샐러리맨이라면 다른건 몰라도 제4부 '당신의 경력'부분은 꼭 읽어보기 바란다. 신입 사원에서부터 관리자까지 직장생활의 기본적인 policy를 세우는데 큰 도움이 된다.

책 말미에 책의 핵심구절을 요약한 챕터를 제공하는데, 독서 후에도 다시금 회고하는데 도움이 될 것 같다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by A.J.Kuhn
<< PREV : [1] : [2] : [3] : [4] : [5] : ... [30] : NEXT >>

BLOG main image
A.J.Kuhn, Endless supply of passion!
Generalist A.J.Kuhn의 general한 이야기 by A.J.Kuhn

카테고리

분류 전체보기 (88)
Human (3)
Employee (6)
Developer (11)
Musician (0)
Snowboarder (10)
Baseball Player (0)
Traveler (0)
Reviewer (58)

글 보관함

달력

«   2010/02   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28            
Total : 77,805
Today : 35 Yesterday : 44