'2017/11/23'에 해당되는 글 1건

  1. 2017.11.23 Hot deploy, DynamicLoading. java,class자동반영

[ Hot deploy,  DynamicLoading, java,class 자동반영 ]

 

 

1. 정의

    . Tomcat 실행 중 java 소스가 변경 시 Tomcat을 restart하지 않고 java소스가 바로 반영

 

2. 방법

    . springloaded-1.2.8.RELEASE.jar  (2018.08.27일 최신)

       - 파일을 down받은 후 특정 폴더 위치시킴

 

    . Eclipse > Tomcat > double click

      -> Open launch configuration  클릭

      -> [Arguments] Tab

      -> VM arguments에 아래 속성 추가

          -javaagent:c:/GDMiStudio/springloaded-1.2.5.RELEASE.jar -noverify

      -> [OK]

 

      -> [Publishing]

           (o) Automatically publish when reosurce change   를 선택

      -> [저장]

 

      참고] VM arguments 전체 예문

            -Dserver.name=LocalTomcat
            -DinstanceNumber=01
            -Dspring.profiles.active=local
            -XX:+TieredCompilation 
            -XX:TieredStopAtLevel=1
            -Xverify:none
            -javaagent:C:\PJT\server\bin\spring\lib\springloaded-1.2.8.RELEASE.jar
            -noverify

 

3. 추가적용예

    -> VM arguments에 추가 속성 정의

         -Ddynamicloading=verbose;onDemand;inclusions=aaa.bbb.ccc..*,aaa.bbb.ddd..*

 

파라미터 초기값 Description

onDemand

false 요청이 있을 때에만 동작 하도록 할 것인지 여부
(설정이 되어 있으면 Watcher 쓰레드를 기동하지 않음.)
scanInterval 1100 모니터링 주기 (milliseconds)
onDemand 옵션이 true 일 경우 무시됨(0으로 설정)
inclusions 포함시킬 패키지 패턴 명
(설정되어 있지 않으면 모든 패키지를 포함함 – 기본제외패키지는 제외)
exclusions 제외시킬 패키지 패턴 명
verbose false Verbose 모드
explain false 재로딩 실패 시 원인을 로그로 출력할 것인지 여부

 

  

 

Controller/Servlet 설정

remote 환경에서 클래스 dynamic loading 요청을 받기 위해 Controller 또는 Servlet이 필요하다. (둘 중 선택)

Spring Controller

아래와 같이 DynamicLoadingManager와 관련 Controller bean 설정을 추가한다.
여기서 ”/dynamicloading/execute”와 ”/dynamicloading/state”는 관련 요청을 받는 URL이 된다.  

 

 

Servlet

제공되는 서블릿에 @WebServlet 설정이 내장되어 있으므로, Servlet3.0을 지원하는 WAS의 경우 별도의 Servlet 설정이 필요없다.
제공되는 URL은 위 Controller와 동일하다.

 

 

참조 : https://github.com/spring-projects/spring-loaded

Posted by 농부지기
,