java개발 시 서버 소스를 수정 시 개발환경 was를 재기동해야지 반영되는데 상당한 시간이 소요된다..
jRebel은 유료라이센스 때문에 무료로 사용할 수 있는 DCEVM을 사용해보고자 찾아봤고 적용한 내용을 남겨놓는다.
사용 중인 java 버전과 DCEVM 제공해주는 jar 버전과 맞는 걸 사용해야 한다.
DCEVM installer 다운로드 및 실행
github.com/dcevm/dcevm/releases경로에서
위에 DCEVM-8u181-installer-build2.jar 다운로드한다.
1) 자바 환경변수 설정되어있을 시.
tip) cmd(관리자 권한 실행)에서 (java 환경변수가 되어있을 경우)
java -jar 경로
java -jar C:\Users\SPA\Downloads\DCEVM-8u181-installer-build2.jar
2) 자바 설치 파일 설치되어있을 시
DCEVM-8u181-installer-build2.jar 더블클릭으로 실행해도 되는 것 같다.
해당되는 java version을 선택해서 Install DCEVM as altjvm 버튼 클릭.
tip) 참고로 java 7, 8만 지원하는 듯하다.
DCEVM hotswap-agent 다운로드
github.com/HotswapProjects/HotswapAgent/releases 경로에서 다운로드
위 항목 중 2번째 hotswap-agent-141.jar 다운로드( 아무 폴더 상관없음)
DCEVM Eclipse tomcat 설정
java -XXaltjvm=dcevm -javaagent:PATH_TO_AGENT\hotswap-agent.jar
path_to_agent는 jar파일 해당 경로를 입력
java -XXaltjvm=dcevm -javaagent:C:\Users\SPA\Desktop\bong\hotswap-agent.jar
1) 톰캣 설정 1
eclipse server > tomcat 더블클릭 > Open launch configuration > Edit Configuration 팝업창 > Argument 항목에서 VM arguments에 입력
2) 톰캣 설정 2
eclipse server > tomcat 더블클릭 > publlshing >
Automatically publish when resources change 체크
3) 톰캣 설정 3
eclipse server > tomcat 더블클릭 > Modules 항목 > Edit에서 > Auto reloading enabled 해제
Hotswap 지원 기능 정리
메소드 바디 체인지 시 변경된 내용 즉시 반영
추가되는 메소드 사용 가능
다른 클래스에 추가되는 메소드 사용 가능
메소드 이름 변경 가능
멤버 필드 추가 가능
멤버 필드 이름 변경 가능
상속 가능
슈퍼 클래스 메소드의 바디 변경 가능
슈퍼 클래스 새로운 메소드 추가 가능
슈퍼 클래스 기존 메소드 이름 변경 가능
슈퍼 클래스 기존 메소드 삭제 가능
super class 자체가 변경되는 것은 hotswap 불가능. 즉, Parent1 슈퍼 클래스를 상속받고 있는 상태에서 Parent2로의 변경 시 hotswap이 제공되지 않는 다는 것이다.
인터페이스
구현되어 있는 인터페이스 추상 메소드 지원
구현되어 있는 인터페이스 추상 메소드 삭제 가능
구현되어 있는 인터페이스 삭제 불가
인터페이스 상속으로 인한 hotswap 지원 불가
인터페이스 상속 해제로 인한 hotswap 지원 불가
'dev > 자바' 카테고리의 다른 글
eclipse maven프로젝트를 gradle로 변경 (0) | 2022.10.13 |
---|---|
Lombok (0) | 2022.09.27 |
JRABEL 라이센스발급, 설치 (0) | 2021.01.11 |
xss (cross site scriptiong) 처리 (0) | 2021.01.08 |
JAVA try-with-resources문 (0) | 2020.05.31 |