기술지원 문의

Resin에서 file로 session관리시 에러가 납니다.
Granpa / 2006-10-09 17:12

사용환경은 다음과 같습니다 .

OS : Windows XP Pro or 2000 Ser.

WAS : resin-3.0.20(GPL) + IIS

 

 

resin.conf에 다음과 같이 설정하여 session정보를 file로 관리하려 합니다.

      <session-config>
       <file-store>WEB-INF/sessions</file-store>
      </session-config>

 


결과는 다음과 같은 에러가 발생하는데 .. 조언 부탁드립니다.

 

[2006-10-09 15:15:59.990]Failed storing persistent session attribute `shared session box.  Persistent session values must extend java.io.Serializable.


[2006-10-09 15:15:59.990]java.io.NotSerializableException: com.caucho.server.session.SessionImpl


[2006-10-09 15:15:59.990]java.io.NotSerializableException: com.caucho.server.session.SessionImpl

 

 

file로 session을 관리하는 이유는 불의의 resin restart로인한 session정보의 손실을

막아보려는 이유입니다.  보다 좋은 방법이 있으시면 ..

추천도 감사하겠습니다.

[답변]Resin에서 file로 session관리시 에러가 납니다.
권용찬 / 2006-10-11 21:25

추석연휴 잘 보내셨습니까!

저희 엔지니어들은 정신이 없답니다. T.T

요즘 Resin WAS Console을 개발하고 있습니다. 

메모리디스크(SSD)를 탑재한 서버에 레진과 당사가 개발한 웹 콘솔을 탑재해서 올해 말쯤 제품을 공급할 예정입니다. 혹시 관심있으시면 언제든지 전화주십시요

 

음...일단 환경을 좀 더 알아야 겠습니다만  먼저 간략하게 말씀드리면

 

file-store를 안정적으로 쓰시기 위해서는 1개의 물리적인 장비에 1개의 resin을 깔고 1개의 Web Applicaiton 만 돌릴경우 문제 없이 사용가능합니다.

 

복수개의 서비스가 있을 경우에는 전역설정에

WEB-INF/sessions  으로 저장소를 지정해 놓을 경우 세션 정보가 겹치거나(정말 로또맞을 확률로) 동시에 접근하려고 하는 문제(대부분 이 문제입니다.)가 발생할 수 있습니다. 

 

꼭 여러개의 서버에 여러개 Web Applicaiton을 띄우면서 세션을 file store로 하기 원하시는 경우에는  session 저장소를 공유하기는 하되 저장 폴더위치를 변경하여 web-app 테그 마다 session 저장 위치를 별도로 지정하면 이러한 충돌은 피할 수 있습니다.

물론 이때 모든 서버의 web-app 테그에 file-store 테그의 설정은 동일해야 합니다.
<host>
<web-app ....>
  <session-config>
    <file-store>[NFS공유위치]/webapp1/sessions</file-store>
  </session-config>
</web-app>
<web-app....>
  <session-config>
    <file-store>[NFS공유위치]/webapp2/sessions</file-store>
  </session-config>
</web-app>
...
</host>

 

작년쯤에 sbs 8대의 서버에서 한서버당 약 20개의 web-app가 돌아가는데 클러스터링을 안하시고  궂이 file-store로 하시겠다고 해서 생 노가다를 해서 각각 잡아 본적이 있는데 ....

고객이 원하면 한다!! 가  엔지니어들의 모토이지만 그렇게 하는 것이 좋은가에 대해서 그다지 긍정적이지 않습니다.

다른 WAS는 잘 모르겠지만 weblogic 과 sunwas는 이렇게 구성이 불가능한것으로 알고 있습니다... 또 세션을 파일로 관리하면 사용자가 얼마 없으면 모르지만 대량 사용자가 있을 경우 그 사이트는 반듯이 다운됩니다. T.T

(Disk IO 뛰기 시작하면 시스템이 거의 바보스럽게 동작하지요)

성능 및 호환성이나 관리편의를 위해서는 그다지 권고할 사항이 아닌것 같습니다.

 

여러대의 서버가 있다면 세션 클러스터링 셋팅을 하는 것이 가장 바른 방법일 것이라고 생각합니다.