목차

JBoss EAP 7 Hot Deploy / Development mode 설정

실시간 JSP컴파일 방식을 사용하기 위해서는 소스배포(Unmanaged)형태로 배포하여야 한다. (WAR형태 불가능)

일단 Undertow 파일 감시기능이 JSP파일 변경을 감지 한 후 재컴파일하도록 설정해야 한다.

EAP 7.0.x

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.x 이상

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) 

Development mode 설정

파일 감시자가 비활성화 된 경우에도 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 직접 수정방법

위의 방법이 아닌 직접 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)

참조링크