1. Hot-deploy
웹로직 프로세스를 리부팅하지 않고도 애플리케이션을 deploy 혹은 redeploy할 수 있다. 이것은 System classloader는 리부팅 시에만 가능하다는 기존의 개념을 극복한 것이다. (System classloader는 CLASSPATH에 의해 설정된 클래스를 로딩하는 로더이다) 이것을 Hot-deploy라 부른다.
단, System Classloader로 deploy한 클래스는 Hot-deploy할 수 없다. Hot-deploy는 System classloader로부터 상속받은 child classloader들을 사용하여 구현한다. 이것을 Application classloader라 부르기도 한다.
Redeploy는 실제 클래스가 변하는 것이 아니다. 다만 기존 classloader를 새로운 classloader로 변경하는 것 뿐이다.
2. Auto-reload
클래스가 변경되었을 때 deploy 하지 않은 채 실시간으로 반영하는 기능이다. 소스 변경이 빈번하게 발생할 때마다 redeploy하지 않아도 되기 때문에 편리하다. 대상은 WEB-INF/classes 내 서블릿 파일과 모든 JSP이다. weblogic.xml 파일을 통해 Auto-reload 주기(interval, secs)를 설정할 수 있다.
<weblogic-web-app> (생략) <jsp-descriptor> <jsp-param> <param-name>pageCheckSeconds</param-name> <param-value>600</param-value> </jsp-param> </jsp-descriptor> <container-descriptor> <servlet-reload-check-secs>600</servlet-reload-check-secs> </container-descriptor> (생략) </weblogic-web-app>
<?xml version="1.0" encoding="UTF-8"?> <weblogic-web-app> <jsp-descriptor> <page-check-seconds>1</page-check-seconds> <verbose>true</verbose> </jsp-descriptor> <charset-params> <input-charset> <resource-path>/*</resource-path> <java-charset-name>UTF-8</java-charset-name> </input-charset> </charset-params> <context-root>/</context-root> </weblogic-web-app>
<?xml version="1.0" encoding="UTF-8"?> <weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"> <jsp-descriptor> <page-check-seconds>1</page-check-seconds> <package-prefix>sarc</package-prefix> <precompile>true</precompile> </jsp-descriptor> <context-root>/</context-root> </weblogic-web-app>
3. Staging
Staging은 from Admin 서버, to 각 Managed 서버로, 특정 디렉토리로 애플리케이션을 복사한 후 그 곳을 소스 위치로 지정하는 기능이다. 다만 소스 복사에 시간이 소요되므로 서버가 기동될 때만 복사한다.
단점은 소스를 변경하기 어렵고, Auto-reload를 사용할 수 없다. (물론 Staging 소스 자체를 변경하여 Auto-reload 할 수는 있다)
Stage 모드를 사용한다면, 소스 파일은 각 Managed 서버들의 각 디렉토리 밑에 stage라는 디렉토리에 복사된다. 오래된 웹로직 6.x의 경우 오직 Stage 모드로만 동작한다. 그리고 applications/.wldonetdelete_xxx/ 밑에 소스 파일을 복사한다.