'리팩토링 사이클'에 해당되는 글 1건

  1. 2008.09.01 [rwb] 리팩토링 작은단계
리팩터링을 하나 선택해서, 큰 단계로 작업 할 수 있더라도, 이 접근법을 이용해 작은 단계로
만들수 있는 지점을 찾아보자.


책에는 일반 자바 코드로 되어있지만, 서블릿 코드로 작성해 본다.
TODO. 기존에 사용하던 DanalExchangeServlet 서블릿을 COMSServlet로 변경하고, 매핑된 서블릿 URL도
          새로 작성하여 변경할것.
(리팩토링은 아니지만, 안정성을 유지하면서 시스템을 변동시킨다는 점에서..)

1. 같은 기능을 작성하는 Copy한 클래스를 작성. COMSServlet이라 명명

< 시스템에 COMSServlet이 사용가능하기 위해선 WAS 재시작 필요 >
2. 새 서블릿에 맞는 DD에서의 선언
 <!-- 연동 프로세스용 -->
 <servlet>
    <servlet-name>DanalProcess</servlet-name>
    <servlet-class>com.servlet.externalDB.DanalExchangeServlet</servlet-class>
 </servlet>
 <servlet-mapping>
    <servlet-name>DanalProcess</servlet-name>
    <url-pattern>/wml/DanalProcess.do</url-pattern>
 </servlet-mapping>

 내용은 같지만 클래스가 새것인 DD 선언 추가
 <servlet>
  <servlet-name>COMSProcess</servlet-name>
  <servlet-class>com.servlet.externalDB.COMSServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>COMSProcess</servlet-name>
  <url-pattern>/wml/COMSProcess.do</url-pattern>
 </servlet-mapping>

< DD의 새로운 선언이 적용 되기 위해선 WAS의 재시작 필요 >
3. 두개의 서블릿이 모두 매핑되어 있는 상태에서, 신규 서블릿으로 모두 변경

4. 구 서블릿의 매핑 유무를 확인, 구 서블릿의 상속, 참조들을 확인후 삭제

WAS의 재시작이 2번이나 필요하다는 점에서 서비스의 안정성을 떨어뜨린다고 할수도 있다.
하지만, 코드의 안정성을 위해서는 구 서블릿이 모두 삭제되기 전에는 클래스를 삭제해서는 안된다.
또한, DD 선언시 클래스를 찾지 못하는 등의 오류가 발생하게 되면 서비스 불가 상태이니
두번의 재시작을 감수한다.
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 영겁회귀

티스토리 툴바