요즘은 블로그 쓰는 시간을 내는 건 사치를 부리는 것 같아서 짧게 짧게..

 

호주 북부에 몰아쳤던 싸이클론 올가인가 하는 놈이 다 죽어가면서 브리즈번에 도착했는데, 그래도 싸이클론이었던 지라 그 영향력이 대단하다. 일주일째 천둥 번개와 비를 수시로 뿌려대고 체감 기온은 한 10도는 떨어진듯하다. 덕분에 평화가 감기가 들려버렸다. 어제 저녁부터 밤새 열이 오르내리더니 기침도 하기 시작했다. 오늘은 어린이 집도 못보내고 병원에나 다녀온 뒤 집에서 돌봐줘야 할 것 같다. 비상모드.

 

제이보스 씸(Seam)을 공부하면서 신기했던 것 한 가지는 씸 애플리케이션이 브라우저의 창과 탭을 구분한다는 것이었다. 예를 들어 쇼핑몰을 돌아다니다가 여러 개의 탭을 열어서 각각 다른 상품을 선택하고 동시에 결재로 들어가면 두 가지 카드의 결재가 병렬적으로, 서로 영향을 주지 않고 진행하는 것이 가능하다는 것이다. 같은 브라우저 인스턴스에서는 멀티 창과 탭에서 모두 웹 세션이 공유되기 때문에 서로 영향을 준다는 것이 상식인데, 이게 어찌 가능한지 신기할 따름이었다. 씸 책에서는 이게 씸을 차세대 프레임워크로 차별화 시켜주는 것이다라며 한것 치켜올리기도 한다. 처음 이런 기능을 보면서 혹시 브라우저가 탭이나 창을 구분할 수 있는 ID 같은 것을 헤더에 보내주는 것이 아닐까라고 생각했다. 궁금해서 테스트를 해보니 탭이 달라져도 HTTP 헤더에 아무런 변화가 없다. 그러면 씸은 도대체 어떻게 각 탭에서의 작업을 완벽히 분리해서 처리할 수 있는 것일까?

답은 알고보니 매우 간단했다. 씸이나 JSF의 컨버세이션이 어떻게 유지되는지를 이해하면 사실 자명한 현상이다. 씸은 일반적으로 HTTP GET요청이 갈 때마다 새로운 컨버세이션을 만든다. 따라서 쇼핑 카트와 주문 프로세스가 하나의 컨버세이션이라면 링크를 클릭하거나 URL을 옮겨 적어 같은 브라우저에서 새 창을 열거나 새 탭을 열게 되면 HTTP GET이 날라가고, 그 안에서 새로운 컨버세이션이 시작되는 것이다. 이렇게 시작된 컨버세이션은 히든 필드에 ID를 숨겨서 POST를 타고 계속 넘어간다. 따라서 탭이 달라지고 창이 달라지면 분리된 컨버세이션이 만들어지고, 그 안에 새로운 컨텍스트를 가진 카트와 결재 컴포넌트들이 만들어져서 POST로 계속 이어지는 컨버세이션ID에 결합되어서 돌아가는 것 뿐이다. 알고보니 간단.

물론 씸은 원한다면 GET으로 링크를 타고 넘어갈 때도 컨버세이션을 유지시켜 줄 수도 있다. URL에 ID를 넣게 해주는 것을 지원한다. 그렇다면 이런 경우에 URL을 카피해서 다른 탭에서 작업을 계속 한다면? 그때는 탭마다 분리된 컨버세이션이 생기지는 못할 것이다.  시간이 없어서 직접 검증은 못해봐서 100% 장담은 못하겠지만 지금까지 공부한 씸에 대한 이해로는 이정도.

씸과 비슷한 stateful 방식의 애플리케이션을 지원하는 스프링 웹 플로는 URL의 파라미터로 각각의 컨버세이션을 구분하는 것이 디폴트이다. POST를 사랑하는 JSF가 기본이 아니기 때문이다. 물론 원한다면 SWF에서도 탭마다 병렬적으로 다른 컨텍스트를 유지시키는 것이 가능하겠지.

아무튼 stateful의 세계는 여러모로 흥미롭다. 조만간 바쁜 작업을 마무리 하고 나면 stateful 개발에 올인해볼 생각이다. 그나저나 친애하는 자바 챔피언 양회장님은 한국 씸 프레임워크 사용자 모임(KSFUG)을 언제 시작하시려나. 발기인으로 참여한지 4개월째인데, 아직도 모임 사이트 소식이 없다…

 

스프링소스의 직원이자 톰캣의 핵심 개발자인 Mark Thomas의 Tomcat 7 관련 인터뷰 기사가 http://java.dzone.com/articles/memory-leak-protection-tomcat 에 실렸다. 구체적으로 Tomcat 7(또는 6의 최신버전)에서 그동안 말썽이던 메모리 누수 문제를 대폭 해결했다는 것이다. 톰캣의 리로딩 기능은 유용하지만 개발과정에서 왠만한 규모의 애플리케이션이라면 4-5차례 리로링을 하고 나면 PermGen이 모자란다고 칭얼거리며 뻗는 톰캣을 경험해봤을 것이다. 문제의 원인과 책임규명은 사실 복잡하고 지저분하다. 근본적인 원인은 리로딩 시에 기존 웹 앱의 클래스 로더를 톰캣이 제거하지만 GC 대상이 되지 못하기 때문이다. 클래스로더가 GC되야 역시 그 안에서 로딩된 애플리케이션의 클래스들도 함께 제거될텐데, 클래스로더가 톰캣 외에 다른 오브젝트를 통해서 참조되고 있기 때문에 문제가 된다. PermGen처럼 사이즈가 작은 메모리가 그래서 가장 먼저 타겟이 된다. 이런 문제의 원인은 다양한데, 위 기사에 잘 설명되어있다. 2004-2005년 즈음에 이 문제로 하이버네이트, CGLib, Commons Logging이 피터지는 공방을 벌였던 기억이 난다. 개빈 킹은 하이버네이트가 집중 공격 당하는 과정에서 열받아서 아파치 그룹의 프로젝트 중 ANT와 Log4J 빼면 다 쓰레기다라는 유명한 발언을 하기도 했다. 지금은 어떻게 생각하는지 모르겠지만. 결국 톰캣 개발자들은 이런 메모리 누수 원인은 대부분 애플리케이션과 라이브러리 탓이라고 책임을 돌렸다. 사실이긴 하다. 심지어 GWT가 적극 사용한다는 JRE의 java 2d API 조차도 메모리 누수의 주범이라고 한다. 깔끔하게 청소해주지 않는 ThreadLocal도 문제다(그래서 스프링은 Thread scope보다는 같은 ThreadLocal을 사용하지만 요청이 끝날 때마다 깔끔히 정리해주는 Request scope 사용을 권장한다).

아무튼 톰캣 최신 버전은 이런 잘 알려진 애플리케이션 내의 메모리 누수의 원인을 톰캣 차원에서 직접 해결하는 기능을 추가했다고 한다. 과연~. 개선했다는 클래스로더의 clearReference()메소드를 구경하고 싶지만.. 어흑 시간이.

 

아이폰 관련 기사나 글, 트위터에 보면 너도 나도 어플리케이션(application) 또는 어플이라는 말을 쓴다. 원 발음 그대로 차음하면 영 어색한 2음절 강세 단어(퍼래미터(parameter)나 어패치(apache) 같은)도 아닌데, 애플리케이션이라고 하면 안되나. 아예 통일해서 "어플(apple)이 만든 먹북(macbook)에서 어플리케이션(application)"을 쓴다라고 하던가.

Related posts:

  1. 유쾌한 이슈처리 재촉 메일
  2. 톰캣 앞에 아파치 웹 서버(Httpd)를 두어야 할까?

Facebook comments:

to “씸은 어떻게 멀티 탭을 구분할까, 톰캣의 메모리 누수 해결법 등등”

  1. Hello there, You have done an excellent job. I will definitely digg it and personally suggest to my friends. I am sure they will be benefited from this website.

  2. Hello there. I found your site by means of Google even as searching for a related subject, your web site got here up. It appears great. I have bookmarked it in my google bookmarks to visit then.

  3. Hiya, I am really glad I have found this info. Today bloggers publish only about gossip and web stuff and this is actually irritating. A good blog with exciting content, that’s what I need. Thank you for making this web site, and I will be visiting again. Do you do newsletters by email?

  4. Hey there. I discovered your site by way of Google at the same time as searching for a related topic, your web site got here up. It appears great. I have bookmarked it in my google bookmarks to visit then.

  5. Hiya, I am really glad I’ve found this information. Nowadays bloggers publish just about gossip and internet stuff and this is actually irritating. A good website with interesting content, that is what I need. Thank you for making this web site, and I’ll be visiting again. Do you do newsletters by email?

  6. Hiya, I am really glad I have found this info. Today bloggers publish just about gossip and net stuff and this is really annoying. A good blog with exciting content, that is what I need. Thank you for making this web-site, and I will be visiting again. Do you do newsletters by email?

  7. Hiya, I am really glad I have found this info. Nowadays bloggers publish just about gossip and net stuff and this is really irritating. A good blog with exciting content, this is what I need. Thank you for making this web site, and I’ll be visiting again. Do you do newsletters by email?

  8. Hi there. I discovered your site via Google whilst looking for a related subject, your website got here up. It seems to be good. I have bookmarked it in my google bookmarks to visit then.

  9. Awesome post. I am a regular visitor of your site and appreciate you taking the time to maintain the excellent site. I will be a regular visitor for a long time.

  10. Hello there. I found your blog via Google at the same time as looking for a similar topic, your website came up. It looks good. I’ve bookmarked it in my google bookmarks to come back then.

  11. Hiya, I am really glad I have found this info. Nowadays bloggers publish just about gossip and internet stuff and this is actually frustrating. A good web site with interesting content, this is what I need. Thank you for making this site, and I’ll be visiting again. Do you do newsletters by email?

  12. Hey there. I discovered your website by the use of Google at the same time as looking for a related matter, your web site got here up. It seems good. I’ve bookmarked it in my google bookmarks to come back then.

  13. Hiya, I’m really glad I’ve found this info. Nowadays bloggers publish only about gossip and net stuff and this is really frustrating. A good web site with exciting content, that’s what I need. Thanks for making this site, and I will be visiting again. Do you do newsletters by email?

  14. Awesome post. I’m a regular visitor of your website and appreciate you taking the time to maintain the nice site. I’ll be a regular visitor for a long time.

  15. kamagra jelly
    Explore acquiring a agent. Although real-estate businesses are there to help you, it may be simpler for you to hire a broker. They are going to look out for your very best pursuits and shop around to discover you the ideal property. This will make your house shopping process a lot less stressful to you.
    dapoxetine 60mg kaufen
    Take the initiative to identify a support group for stress and anxiety patients. With others all around who discuss your fears and uncertainties, you can start to alleviate your stress and anxiety by discussing your negativity and allow area for positive sensations in the future into engage in. Support teams provide you with a possiblity to aid other people also, which you can feel better about.
    cialis switzerland
    To reduce attraction and raise healthy meals purchases, ensure you take in before choosing food. It really is frequent, in pregnancy, to crave meals that are not specifically healthful. The more healthy you consume, the better for you and your child. In the event you go shopping for groceries when whole, you’ll be more unlikely to purchase something away from your listing.
    viagra kopen

  16. Awesome post. I am a normal visitor of your blog and appreciate you taking the time to maintain the excellent site. I will be a frequent visitor for a long time.

  17. Hello there. I discovered your site by means of Google even as searching for a related topic, your web site got here up. It looks great. I have bookmarked it in my google bookmarks to visit then.

  18. Hey there. I found your site by means of Google at the same time as searching for a similar subject, your site came up. It appears to be great. I’ve bookmarked it in my google bookmarks to visit then.

  19. Awesome post. I am a regular visitor of your web site and appreciate you taking the time to maintain the excellent site. I will be a frequent visitor for a really long time.

  20. Awesome post. I’m a regular visitor of your web site and appreciate you taking the time to maintain the excellent site. I’ll be a regular visitor for a long time.

  21. Awesome write-up. I am a regular visitor of your website and appreciate you taking the time to maintain the nice site. I’ll be a frequent visitor for a really long time.

  22. Hiya, I am really glad I have found this info. Nowadays bloggers publish just about gossip and internet stuff and this is actually frustrating. A good web site with interesting content, that’s what I need. Thanks for making this web site, and I will be visiting again. Do you do newsletters by email?

  23. Awesome write-up. I’m a normal visitor of your blog and appreciate you taking the time to maintain the excellent site. I’ll be a regular visitor for a really long time.

  24. Hey there. I discovered your site via Google even as looking for a comparable topic, your website came up. It appears good. I have bookmarked it in my google bookmarks to come back then.

  25. Hiya, I am really glad I have found this info. Today bloggers publish just about gossip and internet stuff and this is really irritating. A good site with interesting content, this is what I need. Thanks for making this web site, and I will be visiting again. Do you do newsletters by email?

  26. Hiya, I am really glad I’ve found this info. Today bloggers publish just about gossip and web stuff and this is actually annoying. A good blog with interesting content, this is what I need. Thanks for making this web site, and I’ll be visiting again. Do you do newsletters by email?

  27. Awesome write-up. I’m a regular visitor of your blog and appreciate you taking the time to maintain the excellent site. I’ll be a regular visitor for a long time.

  28. Hiya, I am really glad I’ve found this information. Today bloggers publish only about gossip and net stuff and this is really irritating. A good site with interesting content, that’s what I need. Thanks for making this web-site, and I will be visiting again. Do you do newsletters by email?

  29. Hiya, I am really glad I’ve found this info. Nowadays bloggers publish just about gossip and net stuff and this is really irritating. A good web site with interesting content, this is what I need. Thanks for making this web site, and I’ll be visiting again. Do you do newsletters by email?

  30. Hey there. I found your site via Google whilst searching for a similar matter, your site got here up. It appears good. I’ve bookmarked it in my google bookmarks to come back then.

  31. I was just looking for this info for some time. After six hours of continuous Googleing, at last I got it in your web site. I wonder what is the lack of Google strategy that don’t rank this kind of informative sites in top of the list. Generally the top sites are full of garbage.

  32. Hi my loved one! I wish to say that this article is amazing, great written and include almost all vital infos. I would like to peer extra posts like this.

  33. Dead written articles , regards for information .

  34. I do accept as true with all the ideas you’ve offered to your post. They’re very convincing and can certainly work. Nonetheless, the posts are too quick for starters. May just you please lengthen them a little from next time? Thank you for the post.

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2017 Toby's Epril Suffusion theme by Sayontan Sinha