본문 바로가기
Java

[Java] Eclipse HotSwap을 이용한 tomcat 재구동 없이 실시간 변화 적용하기!

by Real Iron 2019. 3. 6.

이글에 앞서 eclipse에 내장되어 있는 tomcat을 eclipse tomcat plugin 을 통해 빠르게 구동하는 법을 알고 싶으시면 아래를 먼저 참고하세요.


====================시작============================


Eclipse에서 server side 개발하다보면 변경될 때 마다 tomcat이 재구동(reloadable)되어 짜증나는 경험해봤을 겁니다. (컴퓨터가 빠르면 안 그럴 수도…ㅋㅋ) 이 부분을 막기 위해 단순하게는 Tomcat의 설정을 다음과 같이 바꿔봤을 겁니다. 


또는


물론 좋은 방법입니다. 서버 사이드에서 수정하면 method안에 내용들은 자동으로 반영해주죠. 하지만 새로운 class나 method가 추가/삭제 되거나 xml 수정반영 등은 한계입니다. 이정도 하고 글을 접는다면 애초에 안썼겠죠. 그래서 이번엔 Hot Swap 이라 불리는 기능을 적용해 위의 한계의 범위를 좀더 넓혀보겠습니다. (class, method 추가/삭제는 바로 적용되더군요! 아쉽지만 몇몇 어노테이션은...ㅠㅠ 점차 지원하겠죠? )

Hot Swap 을 지원해주는 Plugin, Program 들이 많이 있습니다. 가장 유명한 JRebel 이라는 게 존재하지만 상업적 이용시 유료 라이센스입니다. 회사다니면 유료 라이선스 쓰기가 쉽지 않으니 패스!


 

지금부터는 Dynamic Code Evolution VM (DCEVM) 을 적용하겠습니다. 적용전에! DCEVM은 java 버전에 엄청 한정적입니다. Java7, 8 에만 적용되며……(눙물..ㅠㅠ) 그래도 우리는 개발시 다른 버전 쓰시고 Tomcat으로 띄울 때(Runtime)만 DCEVM가 지원하는 버전으로 jre를 붙여주시면 됩니다.!


1. https://github.com/dcevm/dcevm/releases 에 들어가서 자신의 버전의 맞는 DCEVM을 다운 받으세요.



2. 다운 받은 파일을 실행합니다. 실행방법은 더블클릭 또는 (더블클릭으로 실행이 안되면) cmd 창에서 java –jar installer{name}.jar



그림과 같이 화면이 뜨면 버전에 맞는 java를 선택해 install DCEVM as altjvm을 클릭

설치가 되면 Yes로 나타납니다.


3. 다음은 HotswpAgent를 다운받으로 가볼까요?

다운받은 HotswapAgent-0.2.zip 파일을 영구적으로 저장할 수 있는 곳(?)에 놓습니다.


4. 다시 이클립스로 돌아와서! Tomcat launch configuration 창에서 아래와 같이 tomcat 구동 시에 파라미터 세팅

-XXaltjvm=dcevm -javaagent:PATH_TO_AGENT\hotswap-agent.jar

(뒤에 =autoHotswap=true를 쓰면 에러 로그가 엄청 쌓인당!!?!)


또는 Sysdeo tomcat Launcher Plugin 을 쓰시는 분은 [Window]-[Preference]메뉴에서 세팅



5. 실행 시에는 반드시 버전 맞춰준 java로 톰캣이 실행되게 해야 합니다. 이제 실행만 하시면 됩니다! 꺄~



제 말이 어렵다면!! 탁구치는 개발자님에게 가보세요! 감사합니다^^

http://lng1982.tistory.com/216