본문 바로가기
개발툴/Eclipse

[Eclipse] 톰캣 재시작 없이 java 파일을 수정 적용 하는 방법

by 코딩 시그널 2021. 1. 9.
반응형

오늘은 Spring Loaded를 이용해서 톰캣 재구동 없이 변경된 수정 내역을 반영하는 방법에 대해 정리에 보겠습니다.

 

스프링 로드란?

Spring Loaded는 JVM이 실행되는 동안 클래스 파일이 변경되면 변경된 사항을 다시 로드하기 위한 JVM 에이전트입니다. 나중에 재로드 할 수 있도록 로드 시 클래스를 변환합니다. JVM이 실행되면 간단한 변경 (예 : 메서드 본문 변경)만 허용하는 'hot code replace'와 달리 Spring Loaded에서는 유형 , 메서드, 필드, 생성자에 대한 주석도 수정할 수 있으며 열거 형 유형의 값을 추가, 제거, 변경할 수 있습니다. Spring Loaded는 JVM에서 실행될 수 있는 모든 바이트 코드에서 사용할 수 있으며 실제로 Grails 2에서 사용되는 재 로딩 시스템입니다.

 

 

1. 아래의 사이트에서 파일을 다운로드합니다.

    저는 가장 최신 버전인 springloaded-1.2.8.RELEASE.jar을 받았습니다.

 

spring-projects/spring-loaded

Java agent that enables class reloading in a running JVM - spring-projects/spring-loaded

github.com

 

Maven Repository: org.springframework » springloaded » 1.2.6.RELEASE

org.springframework springloaded 1.2.6.RELEASE // https://mvnrepository.com/artifact/org.springframework/springloaded compile group: 'org.springframework', name: 'springloaded', version: '1.2.6.RELEASE' // https://mvnrepository.com/artifact/org.springframe

mvnrepository.com

 

2. 파일을 다운로드하였다면 이클립스 톰캣 서버 설정을 변경하겠습니다. 이클립스에서 톰캣 서버를 더블 클릭해 톰캣 설정이 화면을 열어주세요. 

   1. Publishing -> Automatically publish when resources change 항목을 체크해주세요.

   2. Server Options 탭의 모든 체크 항목 해제해 주세요.

   3. General Information 탭 항목의 Open launch configuration을 클릭해주세요

3.  Open launch configuration 클릭하면 Edit Configuration  설정 창이 뜹니다. 두 번째 탭에 있는 Arguments 탭을 눌러주세요.

4. Vm arguments 영역에 아래의 이미지처럼 다음 옵션을 추가해준다.

 

경로

-javaagent:C:\springloaded\springloaded-1.2.8.RELEASE.jar -noverify

 springloaded-1.2.6.RELEASE.jar 파일이 저장되어 있는 경로로 지정합니다.

 

모든 설정이 끝나면 OK 버튼을 눌러 설정 완료해주세요.

 

5. 서버 설정 화면에서 하단에서 modules 탭을 눌러주세요.

 

6. Web Modules 창에 서서 해당 웹 애플리케이션을 선택한 후 Editor 버튼을 선택합니다.

7. Editor Web Module 창에서 Auto reloading enabled 체크 항목을 해제한 후 OK 버튼을 눌러 설정을 저장해 주세요.

 

※ 추가 사항

 

워크스페이스 폴더\Servers\Tomcat v8.5 Server at localhost-config\server.xml 파일에서 reloadable = true 인 경우 false로 변경

<Context reloadable="false">

다음과 같이 설정하면 java 파일을 수정해 적용 시 톰캣 서버를 재구동 할 필요 없이 수정 내용이 적용됩니다. 다만 처음 톰캣을 시작할 경우 각각의 프로젝트 파일에 적용하는 시간 때문에 오래 걸립니다. 이점을 유의해 주세요!  

댓글