JSP(JavaServer Pages) 런타임 다시 로드 설정
JavaServer Pages 파일은 JSP 파일 또는 해당 종속성이 수정될 때 런타임에서 변환 및 컴파일될 수 있으며 이를 JSP 다시 로드라고 합니다.

JSP 다시 로드는 WEB-INF/ibm-web-ext.xmi 또는 WEB-INF/ibm-web-ext.xml 파일에서 reloadEnabled JSP 엔진 매개변수를 통해 사용됩니다.
<jspAttributes xmi:id="JSPAttribute_1" name="reloadEnabled" value="true"/>
<?xml version="1.0" encoding="UTF-8"?>
<web-ext
xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd"
version="1.0">
<jsp-attribute name="trackDependencies" value="true" />
<jsp-attribute name="disableJspRuntimeCompilation" value="true" />
<jsp-attribute name="reloadEnabled" value="true"/>
<reload-interval value="5"/>
<auto-encode-requests value="false"/>
<auto-encode-responses value="false"/>
<enable-directory-browsing value="false"/>
<enable-file-serving value="false"/>
<pre-compile-jsps value="false"/>
<enable-reloading value="true"/>
<enable-serving-servlets-by-class-name value="false" />
</web-ext>

그러나 Java EE 5 이상 모듈은 Java EE 5 이전 파일이 포함되어 있고 .xmi 파일 이름 확장자가 사용된 애플리케이션에 있을 수 있습니다.
ibm-webservices-ext.xmi, ibm-webservices-bnd.xmi, ibm-webservicesclient-bnd.xmi, ibm-webservicesclient-ext.xmi, ibm-portlet-ext.xmi 파일은 .xmi 파일 확장자를 계속 사용합니다.
sptcfg구성 속성 | 프로덕션 환경 설정 | 개발 환경 설정 |
---|---|---|
reloadEnabled | false | true |
reloadInterval | 없음(reloadEnabled가 false인 경우 무시) | 약 5초 |
trackDependencies | 없음(reloadEnabled가 false인 경우 무시) | true(또는 종속성이 변경되지 않고 응답 시간을 줄이려면 false로 설정) |
disableJspRuntimeCompilation | true(또는 JSP가 사전에 컴파일되지 않아 첫 번째 요청 시 컴파일해야 하는 경우 false로 설정) | false |
reloadEnabled 매개변수에 대한 기본값은 true입니다. reloadEnabled 매개변수가 true로 설정된 경우, JSP 파일 및 해당 클래스 파일이 동일한 시간소인을 갖지 않으면 JSP 파일이 런타임 시 다시 로드됩니다. 또한 trackDependencies가 true로 설정된 경우, JSP 클래스 파일이 마지막으로 생성된 이후 임의의 종속성의 시간소인이 변경되면 JSP 파일이 다시 로드됩니다. reloadEnabled 매개변수가 false로 설정된 경우, 매개변수 disableJspRuntimeCompilation이 true가 아닌 경우 해당 JSP 파일에 대한 첫 번째 요청에서 필요한 경우 JSP 파일이 컴파일됩니다. 예를 들어, disableJspRuntimeCompilation이 false이고 reloadEnabled가 false이면 클래스 파일이 구식이 된 경우 JSP 파일이 첫 번째 요청에서 컴파일됩니다. 이는 reloadEnabled가 true가 아니면 JSP 소스 파일이 수정되거나 클래스 파일이 삭제되더라도 후속 요청에서 컴파일하지 않습니다.
다시 로드 간격
다시 로드 간격은 reloadInterval JSP 엔진 매개변수를 통해 설정됩니다.
<jspAttributes xmi:id=JSPAttribute_1 name=reloadInterval value=5/>
<?xml version="1.0" encoding="UTF-8"?>
<web-ext
xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd"
version="1.0">
<jsp-attribute name="trackDependencies" value="true" />
<jsp-attribute name="disableJspRuntimeCompilation" value="true" />
<jsp-attribute name="reloadInterval" value="5"/>
<reload-interval value="5"/>
<auto-encode-requests value="false"/>
<auto-encode-responses value="false"/>
<enable-directory-browsing value="false"/>
<enable-file-serving value="false"/>
<pre-compile-jsps value="false"/>
<enable-reloading value="true"/>
<enable-serving-servlets-by-class-name value="false" />
</web-ext>
다시 로딩이 사용되면 reloadInterval 매개변수 값은 JSP 파일이 구식인지 여부를 보기 위해 검사 사이의 지연을 판별합니다. 예를 들어, reloadInterval이 5이면 JSP 엔진은 마지막 검사가 JSP 파일에 대한 현재 요청보다 5초 이상 이전에 수행될 때에만 JSP 파일이 구식인지 검사합니다. reloadInterval이 초과되면 다시 로드 검사가 수행되고 다시 로드 간격 타이머가 해당 JSP 파일에 대해 0으로 재설정됩니다. reloadInterval이 클수록 JSP 엔진이 JSP 파일을 다시 로드하기 위한 필요성을 검사하는 빈도가 줄어듭니다.
종속성 추적
종속성 추적은 trackDependencies JSP 엔진 매개변수를 통해 설정됩니다.
<jspAttributes xmi:id="JSPAttribute_1" name="trackDependencies" value="true"/>
<?xml version="1.0" encoding="UTF-8"?>
<web-ext
xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd"
version="1.0">
<jsp-attribute name="trackDependencies" value="true" />
<jsp-attribute name="disableJspRuntimeCompilation" value="true" />
<jsp-attribute name="reloadInterval" value="5"/>
<reload-interval value="5"/>
<auto-encode-requests value="false"/>
<auto-encode-responses value="false"/>
<enable-directory-browsing value="false"/>
<enable-file-serving value="false"/>
<pre-compile-jsps value="false"/>
<enable-reloading value="true"/>
<enable-serving-servlets-by-class-name value="false" />
</web-ext>
- JSP 파일에 정적으로 포함되는 파일
- JSP 파일에서 참조되는 태그 파일(JAR 파일에 있는 태그 파일 제외)
- JSP 파일에서 참조되는 TLD(JAR 파일에 있는 TLD 제외)
예를 들어, toplevel.jsp 파일은 thefooter.jspf 파일을 정적으로 포함합니다. toplevel.jsp 파일이 컴파일될 때 footer.jspf 파일의 경로 및 시간소인은 toplevel.jsp의 클래스 파일에 저장됩니다. 따라서 footer.jspf 파일이 수정되고 toplevel.jsp 파일이 요청됩니다. 이제 toplevel.jsp 파일의 다시 로드 간격이 초과되었습니다. JSP 엔진은 클래스 파일에 저장된 시간소인과 디스크의 footer.jspf 파일 시간소인을 비교합니다. 시간소인이 서로 다르므로 footer.jspf 파일에 대한 수정사항을 반영하여 toplevel.jsp 파일이 컴파일됩니다. 종속성 추적이 올바르게 수행되려면 JSP 파일 런타임 시 요청되거나 일괄처리 컴파일러가 처리할 때 trackDependencies 값을 true로 설정해야 합니다.
컴파일 사용 불가능
JavaServer Pages 런타임 컴파일은 disableJspRuntimeCompilation JSP 엔진 매개변수를 사용하여 사용 불가능하게 할 수 있습니다.
<jspAttributes xmi:id="JSPAttribute_1" name="disableJspRuntimeCompilation" value="true"/>
<?xml version="1.0" encoding="UTF-8"?>
<web-ext
xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_0.xsd"
version=1.0>
<jsp-attribute name="trackDependencies" value="true" />
<jsp-attribute name="disableJspRuntimeCompilation" value="true" />
<jsp-attribute name="reloadInterval" value="5"/>
<reload-interval value="5"/>
<auto-encode-requests value="false"/>
<auto-encode-responses value="false"/>
<enable-directory-browsing value="false"/>
<enable-file-serving value="false"/>
<pre-compile-jsps value="false"/>
<enable-reloading value="true"/>
<enable-serving-servlets-by-class-name value="false" />
</web-ext>
disableJspRuntimeCompilation 매개변수가 true로 설정되면 런타임시 JSP 엔진은 JSP 파일을 변환 및 컴파일하지 않습니다. JSP 엔진은 사전 컴파일된 클래스 파일만 로드합니다. 클래스 파일을 로드하기 위해 JSP 소스 파일이 필요하지는 않습니다. 이 옵션을 true로 설정하면 JSP 소스가 없어도 애플리케이션을 설치할 수 있지만 클래스 파일은 미리 컴파일해야 합니다. 서버에 설치된 모든 웹 모듈 작동을 판별하기 위해 사용할 수 있는 동일한 이름의 웹 컨테이너 사용자 정의 특성이 있습니다. 웹 컨테이너 사용자 정의 특성과 JSP 엔진 옵션을 모두 설정하는 경우, JSP 엔진 옵션이 우선합니다. disableJspRuntimeCompilation 매개변수를 true로 설정하면 자동으로 reloadEnabled를 false로 설정합니다.
다시 로드 처리 순서
trackDependencies가 false일 때 JSP 파일 다시 로드와 관련된 처리 순서가 그림 1에 표시됩니다.

trackDependencies가 true일 때, JSP 파일이 마지막으로 변환되고 컴파일된 이후에 JSP 파일 종속성이 변경되었는지 여부를 판별하기 위해 JSP 엔진이 추가 파일 시스템 처리를 수행합니다. 그림 2는 "JSP 클래스 파일이 오래되었습니까?"라는 레이블의 플로우 차트의 '아니오' 경로에 대해 수행되는 추가 프로세스를 표시합니다. disableJspRuntimeCompilation이 true일 때 취해지는 경로가 가장 효율적인 경로임을 알 수 있습니다.
