• 고객센터
  • 교육
  • 매뉴얼
  • 데모
  • 제품소개
조회 수 : 1091
2007.03.31 (01:27:37)
안녕하세요?

필터 관련 문제 때문에 저희가 티맥스쪽에 문의해서 얻은 아래에 적어 놓을테니 참고하세요

예전 LPL(엘지 필립스엘시디)쪽에서 발생했던 문제점 해결한 내용입니다.

그럼 수고하세요.

[관련내용]

일단 JEUS에서 변경된 class를 auto reload하는 방법에는 두가지가 있습니다.

첫번째는    시간주기로 container에서 변경된 class를 체크하여 auto reload하는 방식이고

첫번째는    변경된 class에 요청이 왔을 때 auto reload하는 방식입니다



이러한 설정은

$JEUS_HOME/config/[nodename]/[nodename]_servlet_engine1/jeus-web-dd_[contextname].xml에서 할수 있으며

jeus-web-dd_[contextname].xml 파일을 열어보시면



….

<auto-reload>

            <enable-reload>true</enable-reload>                       --- 첫번째 방식 default 시간간격 : 300초

            <check-on-demand>true</check-on-demand>       --- 두번째 방식

</auto-reload>

….

위와 같이 auto-reload에 관한 설정을 보실 수 있습니다.

테스트시에도 변경된 class를 적용하신후, 바로 호출하였기 때문에 두번째 방법이 먼저 적용되었습니다.



두번째 방식(check-on-demand)은 다른 WAS에서는 사용하지 않는 방식으로, 개발자의 편의를 위해서

JEUS에 도입된 기술입니다. 그런데 이 방식의 알고리즘(원문 메시지 참고)상 servlet filter를 사용할 경우,

처음 호출시에는 호출한 servlet만 auto-reload되고 servlet filter는 auto reload되지 않기 때문에, 위와

같은 문제가 발생한 것 같습니다. (두번째 호출시에는 servlet filter 또한 auto reload되기 때문에 정상적으로

Hash code값이 바뀌어 나옵니다)



다른 WAS에서는 위와 같은 문제가 발생하지 않은 이유는 다른 WAS의 경우 첫번째방식만을 지원하고 있고

check하는 시간 간격이 짧기 때문에 위와 같은 문제가 발생하지 않는 것으로 추정됩니다.



=== 해결 방법 ===

jeus-web-dd_[contextname].xml의 <check-on-demand>를 false로 설정하시고

….

<auto-reload>

            <enable-reload>true</enable-reload>                

            <check-on-demand>false</check-on-demand>

</auto-reload>

….



$JEUS_HOME/config/[nodename]/[nodename]_servlet_engine1/WEBMain.xml에서

<web-container>태그 바로 하단에 <monitoring>/<check-class-reload>를 아래와 같이 설정하시면 됩니다.

(설정후 재부팅하셔야 적용됩니다.)



<web-container>

<monitoring>

                 <check-class-reload>2000</check-class-reload>

</monitoring>

……..



위와 같이 설정하였을 경우 2초(2000ms)간격으로 container에서 class reload된 것을 체크하겠다는 의미입니다.

시간 간격은 편하실 되로 적용하시면 됩니다.(최소값은 1초(1000ms)입니다)



위의 내용은 실제로 테스트를 한 내용으로 위와 같이 하고 동일한 테스트를 실행하면 hash code값이 class reload된후

재호출시에도 변경되어 나옵니다.



>게시판을 이용해 주셔서 감사합니다.
>다음양식에 맞게 입력해주세요.
>
>* 고객시스템명 :
>* GAUCE 버전 : 4.0(JAVA)
>* WAS 종류(WebLogic 등등) : JEUS 5.0 Fix 13
>* DB 종류 : Oracle 9i
>* 문의 유형(질문/요청/참조) : 질문
>* 내용 :
>
>=======================================================
>질문에 답변이 없어서 다시한번 질문합니다.
>=======================================================
>
>
>JEUS에서 가우스 필터를 등록해서 사용하고 있습니다.
>Gauce FAQ에 있는대로 설정을 해 주었는데
>ANT를 이용하여 build한 다음 Gauce Filter가 다시 로딩이 되지 않습니다.
>ANT로 빌드시 기존에 있던 클래스 파일들을 자동으로 모두 삭제한 다음
>컴파일된 파일이 WEB-INF/classes아래로 옮겨집니다.
>
>다음은 설정된 구성입니다.
><jeus-web-dd.xml>
><?xml version="1.0" encoding="UTF-8"?>
><jeus-web-dd xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
>    <context-path>/</context-path>
>    <enable-jsp>true</enable-jsp>
>    <auto-reload>
>        <enable-reload>true</enable-reload>
>        <check-on-demand>false</check-on-demand>
>    </auto-reload>
>    
>    <res-ref>
>      <jndi-info>
>        <ref-name>import</ref-name>
>        <export-name>import</export-name>
>      </jndi-info>
>    </res-ref>
>
>    <max-instance-pool-size>-1</max-instance-pool-size>
>    <url-rewriting>false</url-rewriting>
>    <enable-default-login>false</enable-default-login>
>    <webinf-first>false</webinf-first>
></jeus-web-dd>
>
>
><WEBMain.xml>
><?xml version="1.0" encoding="UTF-8"?>
><web-container xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
>    <monitoring>
>        <check-class-reload>5000</check-class-reload>
>    </monitoring>
>    <context-group>
>       <group-name>MyGroup</group-name>
>       <webserver-connection>
>           <http-listener>
>               <listener-id>import_02</listener-id>
>               <port>6066</port>
>               <output-buffer-size>8192</output-buffer-size>
>               <thread-pool>
>                   <min>10</min>
>                   <max>20</max>
>               </thread-pool>
>           </http-listener>
>       </webserver-connection>
>    </context-group>
></web-container>
>
>
><web.xml>
><?xml version="1.0" encoding="UTF-8"?>
><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee">
>        <!-- Session Timeout -->
>        <session-config>
>                <session-timeout>720</session-timeout>
>        </session-config>
>        
>        <!-- Define Gauce Filter -->
>        <filter>
>                <filter-name>GauceFilter</filter-name>
>                <filter-class>com.gauce.filter.GauceFilter</filter-class>
>                <init-param>
>                        <param-name>conf-reload</param-name>
>                        <param-value>5000</param-value>
>                </init-param>
>        </filter>
>        <filter-mapping>
>                <filter-name>GauceFilter</filter-name>
>                <url-pattern>/*</url-pattern>
>        </filter-mapping>
>  
>        <!-- Define JJActionServlet -->
>        <servlet>
>                <servlet-name>JJActionServlet</servlet-name>
>                <servlet-class>kr.co.jinjin.servlet.JJActionServlet</servlet-class>
>                <init-param>
>                        <param-name>action_package</param-name>
>                        <param-value>kr.co.jinjin.action</param-value>
>                </init-param>
>                <init-param>
>                        <param-name>action_config</param-name>
>                        <param-value>conf/action_config.xml</param-value>
>                </init-param>
>        </servlet>
>        <servlet-mapping>
>                <servlet-name>JJActionServlet</servlet-name>
>                <url-pattern>/Import.cmd</url-pattern>
>        </servlet-mapping>
>        
>        <!-- Define Error Page -->
>        <error-page>
>                <error-code>500</error-code>
>                <location>/common/error/500.jsp</location>
>        </error-page>
>        
>        <resource-ref>
>                <description>Oracle Server Datasource Configuration</description>
>                <res-ref-name>import</res-ref-name>
>                <res-type>javax.sql.DataSource</res-type>
>                <res-auth>Container</res-auth>
>        </resource-ref>
>        
>        <!-- Define Welcome File -->
>        <welcome-file-list>
>                <welcome-file>index.jsp</welcome-file>
>                <welcome-file>index.html</welcome-file>
>                <welcome-file>index.htm</welcome-file>
>        </welcome-file-list>
></web-app>
>
>왜 그럴까요?
>항상 빌드하고 난 다음에는
>가우스 필터쪽에서 ClassCastException이 발생하여 여러번 화면을 Refersh 해도
>동일한 에러가 발생하여 Jeus Container를 다시 죽였다 살려야합니다.
>
>도와주시죠 ㅡ,.ㅡ;  
>
 
Tag List
XE Login