본문 바로가기

hotdeploy

[JAVA] 클래스 hot deploy #2 라고 하기까진 뭐하고... 그냥 classloader를 바꿔버리는 것을 이용해서 해보았다. 예전에 실패했을 때의 원인이었던것... (http://devyongsik.tistory.com/274) 기본적으로 클래스패스에 있던 클래스는 이미 시스템클래스로더가 클래스를 로딩한 상태이기 때문에 그 하위 클래스로더에서 아무리 URLClassLoader를 사용해 바꿔치기 해봤자 영향이 없다는 것... 그렇다면, 방법은.. 우리가 hot deploy를 해보고 싶은 클래스를 시스템 클래스로더가 아닌 우리가 정의한 (즉, 우리가 컨트롤 할 수 있는) 클래스로더가 물고 올라가도록 하면 이후에도 우리가 컨트롤 할 수 있지 않을까... 생각했다. 이클립스에서 workspace를 c: 쪽을 사용하고 있는데 일단 이런저런 생각하.. 더보기
URLClassLoader를 사용 한 class hot deploy (실패) Jrebel을 알게 되면서 class를 hot deploy 하는 방법이 뭘까... 하고서 찾아보았다. classloader가 한번 class를 load하게 되면 그 클래스를 unload 할 수 없기 때문에 URLClassLoader를 사용해서 classloader를 새로 생성하여 class를 동적으로 로딩하면 가능하다라는 것을 알게 되어서 막 코딩을 시작. -_- public class Reloader { private Log logger = LogFactory.getLog(Reloader.class); URLClassLoader appClassLoader = null; File dir = new File("C:/TDPWrokspace/test/bin/hotdeploy/"); public void run.. 더보기