실시간 JSP컴파일 방식을 사용하기 위해서는 소스배포(Unmanaged)형태로 배포하여야 한다. (WAR형태 불가능)
일단 Undertow 파일 감시기능이 JSP파일 변경을 감지 한 후 재컴파일하도록 설정해야 한다.
EAP 7.0.x 버전에서는 io.undertow.disable-file-system-watcher
시스템 속성을 true
로 설정하여 파일 감시자를 비활성화 할 수 있습니다.
JAVA_OPTS="$JAVA_OPTS -Dio.undertow.disable-file-system-watcher=true"
또는 CLI모드로 아래와 같이 지정합니다.
/system-property=io.undertow.disable-file-system-watcher:add(value=true)
EAP 7.1.0 이상 에서는 undertow subsytem에서 disable-file-watch-service
속성을 true로 설정하여 비활성화 할 수 있습니다.
/subsystem=undertow/servlet-container=default:write-attribute(name=disable-file-watch-service,value=true)
파일 감시자가 비활성화 된 경우에도 Undertow 하위 시스템에서 재 컴파일을 활성화 할 수 있습니다. 모든 요청에서 재 컴파일 검사를위한 개발 모드를 사용하십시오.
<subsystem xmlns="urn:jboss:domain:undertow:3.1"> ... <servlet-container name="default"> <jsp-config development="true"/> <websockets/> </servlet-container>
CLI모드에서 관련 설정을 한번에 설정 할 수 있습니다.
다만 check-interval
이나 modification-test-interval
수치를 너무 작게 잡으면 서버에서 체크하는 부하가 커지므로 적당한 시간으로 설정하여야 합니다.
해당 값은 초
단위입니다.
/subsystem=undertow/servlet-container=default/setting=jsp:write-attribute(name=development,value=true) /subsystem=undertow/servlet-container=default/setting=jsp:write-attribute(name=recompile-on-fail,value=true) /subsystem=undertow/servlet-container=default/setting=jsp:write-attribute(name=check-interval,value=60) /subsystem=undertow/servlet-container=default/setting=jsp:write-attribute(name=modification-test-interval,value=60)
위의 방법이 아닌 직접 configuration xml파일을 직접 수정하는 방법이다. 권장하지는 않는다.
해당 설정파일의 내용중 아래 부분을 추가 하면 된다.
... 생략 <subsystem xmlns="urn:jboss:domain:undertow:3.1"> <buffer-cache name="default"/> <server name="default-server"> <http-listener name="default" socket-binding="http" redirect-socket="https"/> <host name="default-host" alias="localhost"> <filter-ref name="server-header"/> <filter-ref name="x-powered-by-header"/> </host> </server> <servlet-container name="default"> <!-- 아래부분 수정 --> <jsp-config development="true" check-interval="1" modification-test-interval="1" recompile-on-fail="true"/> <!-- 여기까지 --> <websockets/> </servlet-container> <handlers> <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> </handlers> <filters> <response-header name="server-header" header-name="Server" header-value="JBoss-EAP/7"/> <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/> </filters> </subsystem> ... 생략
/subsystem=undertow/servlet-container=default/setting=jsp:write-attribute(name=development,value=true) /subsystem=undertow/servlet-container=default/setting=jsp:write-attribute(name=recompile-on-fail,value=true) /subsystem=undertow/servlet-container=default/setting=jsp:write-attribute(name=check-interval,value=1) /subsystem=undertow/servlet-container=default/setting=jsp:write-attribute(name=modification-test-interval,value=1)