기술지원 문의

servlet reload
김동철 / 2007-07-13 09:12

안녕하세요.

이클립스에서 컴파일해서 클래스를 레진 web-inf/classes 밑에 복사하면

서블릿이 리로드 되어야 하는걸루 알고 있는데

일단 리로드가 되기는 하는데 서버를 자동으로 리스타트를 해서

반영이 되더군요. 당연히 세션은 끊겨버리고

원래 이런건지 알고 싶습니다.

환경은 이클립스에서 플러그인으로 서버를 스타트했습니다.

밑에는 환경파일입니다.

레진서버는 resin-3.0.23 버전입니다.

어느경우에 이런 증상이보이는지 알고 싶습니다.

<server xmlns=\"http://caucho.com/ns/resin\"
        xmlns:resin=\"http://caucho.com/ns/resin/core\">

<ear-default>
  <resin:import path=\"META-INF/application.xml\"/>
</ear-default>

<web-app-default>
  <!-- configures the default class loader -->
  <class-loader>
    <simple-loader path=\"WEB-INF/classes\"/>
    <library-loader path=\"WEB-INF/lib\"/>
  </class-loader>

  <servlet servlet-name=\"resin-file\"
           servlet-class=\"com.caucho.servlets.FileServlet\"/>

  <servlet servlet-name=\"resin-jsp\"
           servlet-class=\"com.caucho.jsp.JspServlet\">
    <init>
      <load-tld-on-init>false</load-tld-on-init>
      <page-cache-max>1024</page-cache-max>
    </init>
    <load-on-startup/>
  </servlet>

  <servlet servlet-name=\"resin-jspx\"
           servlet-class=\"com.caucho.jsp.JspServlet\">
    <init>
      <load-tld-on-init>false</load-tld-on-init>   
      <page-cache-max>1024</page-cache-max>
      <xml>true</xml>
    </init>
    <load-on-startup/>
  </servlet>

  <servlet servlet-name=\"resin-xtp\"
           servlet-class=\"com.caucho.jsp.XtpServlet\"/>

  <servlet-mapping url-pattern=\"*.jsp\" servlet-name=\"resin-jsp\"/>
  <servlet-mapping url-pattern=\"*.jspx\" servlet-name=\"resin-jspx\"/>
  <servlet-mapping url-pattern=\"*.xtp\" servlet-name=\"resin-xtp\"/>

  <servlet-mapping url-pattern=\"/\" servlet-name=\"resin-file\"/>

  <servlet servlet-name=\"j_security_check\"
           servlet-class=\"com.caucho.server.security.FormLoginServlet\"/>

  <login-config>
    <auth-method>basic</auth-method>
    <realm-name>resin</realm-name>
  </login-config>

  <!-- Configures the special index files to check for directory URLs -->
  <welcome-file-list>
    <welcome-file>index_buyer.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>

  <mime-mapping extension=\".html\" mime-type=\"text/html\"/>
  <mime-mapping extension=\".aif\" mime-type=\"audio/x-aiff\"/>
  <mime-mapping extension=\".aiff\" mime-type=\"audio/x-aiff\"/>
  <mime-mapping extension=\".aifc\" mime-type=\"audio/x-aiff\"/>
  <mime-mapping extension=\".ai\" mime-type=\"application/postscript\"/>
  <mime-mapping extension=\".au\" mime-type=\"audio/basic\"/>
  <mime-mapping extension=\".asc\" mime-type=\"text/plain\"/>
  <mime-mapping extension=\".asf\" mime-type=\"video/x-ms-asf\"/>
  <mime-mapping extension=\".asx\" mime-type=\"video/x-ms-asf\"/>
  <mime-mapping extension=\".avi\" mime-type=\"video/x-msvideo\"/>
   
  <mime-mapping extension=\".bin\" mime-type=\"application/octet-stream\"/>
  <mime-mapping extension=\".bcpio\" mime-type=\"application/x-bcpio\"/>
  <mime-mapping extension=\".bmp\" mime-type=\"image/bmp\"/>
   
  <mime-mapping extension=\".class\" mime-type=\"application/octet-stream\"/>
  <mime-mapping extension=\".cpt\" mime-type=\"application/mac-compactpro\"/>
  <mime-mapping extension=\".css\" mime-type=\"text/css\"/>
  <mime-mapping extension=\".cpio\" mime-type=\"application/x-cpio\"/>
  <mime-mapping extension=\".csh\" mime-type=\"application/x-csh\"/>
  <mime-mapping extension=\".cdf\" mime-type=\"application/x-netcdf\"/>
   
  <mime-mapping extension=\".dms\" mime-type=\"application/octet-stream\"/>
  <mime-mapping extension=\".doc\" mime-type=\"application/msword\"/>
  <mime-mapping extension=\".dcr\" mime-type=\"application/x-director\"/>
  <mime-mapping extension=\".dir\" mime-type=\"application/x-director\"/>
  <mime-mapping extension=\".dll\" mime-type=\"application/x-msdownload\"/>
  <mime-mapping extension=\".dxr\" mime-type=\"application/x-director\"/>
  <mime-mapping extension=\".dvi\" mime-type=\"application/x-dvi\"/>
   
  <mime-mapping extension=\".exe\" mime-type=\"application/octet-stream\"/>
  <mime-mapping extension=\".eps\" mime-type=\"application/postscript\"/>
  <mime-mapping extension=\".etx\" mime-type=\"text/x-setext\"/>
   
  <mime-mapping extension=\".gtar\" mime-type=\"application/x-gtar\"/>
  <mime-mapping extension=\".gif\" mime-type=\"image/gif\"/>
  <mime-mapping extension=\".gz\" mime-type=\"application/octet-stream\"/>
   
  <mime-mapping extension=\".hdml\" mime-type=\"text/x-hdml\"/>
  <mime-mapping extension=\".hqx\" mime-type=\"application/mac-binhex40\"/>
  <mime-mapping extension=\".html\" mime-type=\"text/html\"/>
  <mime-mapping extension=\".htm\" mime-type=\"text/html\"/>
  <mime-mapping extension=\".hdf\" mime-type=\"application/x-hdf\"/>
   
  <mime-mapping extension=\".ief\" mime-type=\"image/ief\"/>
  <mime-mapping extension=\".ice\" mime-type=\"x-conference/x-cooltalk\"/>

  <mime-mapping extension=\".jar\" mime-type=\"application/java-archive\"/>
  <mime-mapping extension=\".jnlp\" mime-type=\"application/x-java-jnlp-file\"/>
  <mime-mapping extension=\".jpeg\" mime-type=\"image/jpeg\"/>
  <mime-mapping extension=\".jpg\" mime-type=\"image/jpeg\"/>
  <mime-mapping extension=\".jpe\" mime-type=\"image/jpeg\"/>
  <mime-mapping extension=\".js\" mime-type=\"application/x-javascript\"/>
   
  <mime-mapping extension=\".kar\" mime-type=\"audio/midi\"/>
   
  <mime-mapping extension=\".latex\" mime-type=\"application/x-latex\"/>
  <mime-mapping extension=\".lha\" mime-type=\"application/octet-stream\"/>
  <mime-mapping extension=\".lhz\" mime-type=\"application/octet-stream\"/>
   
  <mime-mapping extension=\".mid\" mime-type=\"audio/midi\"/>
  <mime-mapping extension=\".mpeg\" mime-type=\"video/mpeg\"/>
  <mime-mapping extension=\".mpg\" mime-type=\"video/mpeg\"/>
  <mime-mapping extension=\".mpe\" mime-type=\"video/mpeg\"/>
  <mime-mapping extension=\".mov\" mime-type=\"video/quicktime\"/>
  <mime-mapping extension=\".movie\" mime-type=\"video/x-sgi-movie\"/>
  <mime-mapping extension=\".mpga\" mime-type=\"audio/mpeg\"/>
  <mime-mapping extension=\".mp2\" mime-type=\"audio/mpeg\"/>
  <mime-mapping extension=\".mp3\" mime-type=\"audio/mpeg\"/>
  <mime-mapping extension=\".man\" mime-type=\"application/x-troff-man\"/>
  <mime-mapping extension=\".me\" mime-type=\"application/x-troff-me\"/>
  <mime-mapping extension=\".ms\" mime-type=\"application/x-troff-ms\"/>
   
  <mime-mapping extension=\".nc\" mime-type=\"application/x-netcdf\"/>
   
  <mime-mapping extension=\".oda\" mime-type=\"application/oda\"/>
   
  <mime-mapping extension=\".pdf\" mime-type=\"application/pdf\"/>
  <mime-mapping extension=\".ps\" mime-type=\"application/postscript\"/>
  <mime-mapping extension=\".ppt\" mime-type=\"application/vnd.ms-powerpoint\"/>
  <mime-mapping extension=\".png\" mime-type=\"image/png\"/>
  <mime-mapping extension=\".pgn\" mime-type=\"application/x-chess-pgn\"/>
  <mime-mapping extension=\".pnm\" mime-type=\"image/x-portable-anymap\"/>
  <mime-mapping extension=\".pbm\" mime-type=\"image/x-portable-bitmap\"/>
  <mime-mapping extension=\".pgm\" mime-type=\"image/x-portable-graymap\"/>
  <mime-mapping extension=\".ppm\" mime-type=\"image/x-portable-pixmap\"/>
   
  <mime-mapping extension=\".qt\" mime-type=\"video/quicktime\"/>
   
  <mime-mapping extension=\".rtf\" mime-type=\"application/rtf\"/>
  <mime-mapping extension=\".ram\" mime-type=\"audio/x-pn-realaudio\"/>
  <mime-mapping extension=\".rm\" mime-type=\"audio/x-pn-realaudio\"/>
  <mime-mapping extension=\".rpm\" mime-type=\"audio/x-pn-realaudio-plugin\"/>
  <mime-mapping extension=\".ra\" mime-type=\"audio/x-realaudio\"/>
  <mime-mapping extension=\".ras\" mime-type=\"image/x-cmu-raster\"/>
  <mime-mapping extension=\".rgb\" mime-type=\"image/x-rgb\"/>
  <mime-mapping extension=\".rtx\" mime-type=\"text/richtext\"/>
  <mime-mapping extension=\".rtf\" mime-type=\"text/rtf\"/>
   
  <mime-mapping extension=\".smi\" mime-type=\"application/smil\"/>
  <mime-mapping extension=\".smil\" mime-type=\"application/smil\"/>
  <mime-mapping extension=\".sml\" mime-type=\"application/smil\"/>
  <mime-mapping extension=\".skp\" mime-type=\"application/x-koan\"/>
  <mime-mapping extension=\".skd\" mime-type=\"application/x-koan\"/>
  <mime-mapping extension=\".skt\" mime-type=\"application/x-koan\"/>
  <mime-mapping extension=\".skm\" mime-type=\"application/x-koan\"/>
  <mime-mapping extension=\".src\" mime-type=\"application/x-wais-source\"/>
  <mime-mapping extension=\".sh\" mime-type=\"application/x-sh\"/>
  <mime-mapping extension=\".shar\" mime-type=\"application/x-shar\"/>
  <mime-mapping extension=\".swf\" mime-type=\"application/x-shockwave-flash\"/>
  <mime-mapping extension=\".sit\" mime-type=\"application/x-stuffit\"/>
  <mime-mapping extension=\".spl\" mime-type=\"application/x-futuresplash\"/>
  <mime-mapping extension=\".sv4cpio\" mime-type=\"application/x-sv4cpio\"/>
  <mime-mapping extension=\".sv4crc\" mime-type=\"application/x-sv4crc\"/>
  <mime-mapping extension=\".snd\" mime-type=\"audio/basic\"/>
  <mime-mapping extension=\".sgml\" mime-type=\"text/sgml\"/>
  <mime-mapping extension=\".sgm\" mime-type=\"text/sgml\"/>
   
  <mime-mapping extension=\".t\" mime-type=\"application/x-troff\"/>
  <mime-mapping extension=\".tar\" mime-type=\"application/x-tar\"/>
  <mime-mapping extension=\".tcl\" mime-type=\"application/x-tcl\"/>
  <mime-mapping extension=\".tex\" mime-type=\"application/x-tex\"/>
  <mime-mapping extension=\".texi\" mime-type=\"application/x-texinfo\"/>
  <mime-mapping extension=\".texinfo\" mime-type=\"application/x-texinfo\"/>
  <mime-mapping extension=\".tgz\" mime-type=\"application/octet-stream\"/>
  <mime-mapping extension=\".tiff\" mime-type=\"image/tiff\"/>
  <mime-mapping extension=\".tif\" mime-type=\"image/tiff\"/>
  <mime-mapping extension=\".torrent\" mime-type=\"application/x-bittorrent\"/>
  <mime-mapping extension=\".tr\" mime-type=\"application/x-troff\"/>
  <mime-mapping extension=\".troff\" mime-type=\"application/x-troff\"/>
  <mime-mapping extension=\".tsv\" mime-type=\"text/tab-separated-values\"/>
  <mime-mapping extension=\".txt\" mime-type=\"text/plain\"/>
   
  <mime-mapping extension=\".ustar\" mime-type=\"application/x-ustar\"/>
   
  <mime-mapping extension=\".vcd\" mime-type=\"application/x-cdlink\"/>
  <mime-mapping extension=\".vrml\" mime-type=\"model/vrml\"/>
   
  <mime-mapping extension=\".wav\" mime-type=\"audio/x-wav\"/>
  <mime-mapping extension=\".wax\" mime-type=\"audio/x-ms-wax\"/>
  <mime-mapping extension=\".wrl\" mime-type=\"model/vrml\"/>
  <mime-mapping extension=\".wma\" mime-type=\"audio/x-ms-wma\"/>
  <mime-mapping extension=\".wml\" mime-type=\"text/vnd.wap.wml\"/>
  <mime-mapping extension=\".wmls\" mime-type=\"text/vnd.wap.wmlscript\"/>
  <mime-mapping extension=\".wmlc\" mime-type=\"application/vnd.wap.wmlc\"/>
  <mime-mapping extension=\".wmlsc\" mime-type=\"application/vnd.wap.wmlscript\"/>
  <mime-mapping extension=\".wbmp\" mime-type=\"image/vnd.wap.wbmp\"/>
  
  <mime-mapping extension=\".xls\" mime-type=\"application/vnd.ms-excel\"/>
  <mime-mapping extension=\".xbm\" mime-type=\"image/x-xbitmap\"/>
  <mime-mapping extension=\".xml\" mime-type=\"text/xml\"/>
  <mime-mapping extension=\".xpm\" mime-type=\"image/x-xpixmax\"/>
  <mime-mapping extension=\".xsl\" mime-type=\"text/xml\"/>
  <mime-mapping extension=\".xwd\" mime-type=\"image/x-xwindowdump\"/>
   
  <mime-mapping extension=\".zip\" mime-type=\"application/zip\"/>
  <mime-mapping extension=\".z\" mime-type=\"application/octet-stream\"/>

  <resin:import path=\"WEB-INF/web.xml\" optional=\"true\"/>
  <resin:import path=\"WEB-INF/resin-web.xml\" optional=\"true\"/>
</web-app-default>

</server>

[답변]servlet reload
기술지원팀 / 2007-07-13 10:38

안녕하세요 기술지원팀입니다.

 

먼저 문의해주신 동작은 원래 WAS의 동작 방법이 그러합니다.

 

수정된 class를 반영하는 기능을 제품마다 조금씩 다르지만 hot deploy라고 합니다. 운영중 변경된 class들을 실시간으로 적용하는 방법입니다.,

 

개발중에는 이러한 기능이 도움이 되지만 일반적으로 운영시에는 성능이나 장애발생 위험때문에 기능을 비활성화 합니다,

 

특히나 핫디플로이 시에는 당연시 서블릿 컨테이너가 재구동 되기 때문에 세션이 끊어지는 현상이 발생하게 됩니다. (이건 WAS라면 당연히 ^^;;)

 

개발중에 이러한 경우 세션이 끊어져서 테스트를 위해 매번 로그인처리하기가 귀찮을수 있습니다. 이때는 session을 파일로 저장해 놓으면 재구동하거나 핫디플로이 되더라도 세션을 유지하실 수 있습니다.

 

자세한 정보가 필요하시면 다시한번 문의바랍니다.