Valores de recarga de tiempo de ejecución de JSP (JavaServer Pages)
Los archivos JSP (JavaServer Pages) se pueden traducir y compilar en el tiempo de ejecución cuando se modifican el archivo JSP o sus dependencias. Esto se conoce como recarga de JSP.

La recarga de JSP se habilita a través del parámetro del motor JSP reloadEnabled en el archivo WEB-INF/ibm-web-ext.xmi o WEB-INF/ibm-web-ext.xml.
<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>

No obstante, puede existir un módulo de Java EE 5 o posterior dentro de una aplicación que incluya archivos previos a Java EE 5 y que utilice la extensión de nombre de archivo .xmi.
Los archivos ibm-webservices-ext.xmi, ibm-webservices-bnd.xmi, ibm-webservicesclient-bnd.xmi, ibm-webservicesclient-ext.xmi, y ibm-portlet-ext.xmi siguen utilizando la extensión de archivo .xmi.
sptcfgAtributo de configuración | Valor del entorno de producción | Valor del entorno de desarrollo |
---|---|---|
reloadEnabled | false | true |
reloadInterval | n/d (se ignora si reloadEnabled es false) | aproximadamente 5 segundos |
trackDependencies | n/d (se ignora si reloadEnabled es false) | true - O bien, establezca este valor como false para mejorar el tiempo de respuesta si no se modifican las dependencias |
disableJspRuntimeCompilation | true - O bien, establezca este valor como false si los archivos JSP no están precompilados y se deben compilar en la primera petición. | false |
El valor predeterminado para el parámetro reloadEnabled es true. Si el parámetro reloadEnabled está establecido en true, se vuelve a cargar un archivo JSP durante el tiempo de ejecución, si el archivo JSP y su archivo de clase no tienen la misma indicación de fecha y hora. Además, si trackDependencies está establecido en true, el archivo JSP se vuelve a cargar si la indicación de fecha y hora de alguna de sus dependencias se ha modificado desde que se generó por última vez el archivo de clase JSP. Si el parámetro reloadEnabled está establecido en false, se sigue compilando un archivo JSP, si es necesario en la primera solicitud, a menos que el parámetro disableJspRuntimeCompilation esté establecido en true. Por ejemplo, cuando disableJspRuntimeCompilation es false y reloadEnabled es false, se compila un archivo JSP en la primera solicitud, si el archivo de clase no está actualizado. No se compilaría en las siguientes solicitudes, aunque el archivo de origen JSP se haya modificado o el archivo de clase se haya suprimido, a menos que reloadEnabled sea true.
Intervalo de recarga
El intervalo de recarga se establece mediante el parámetro del motor JSP reloadInterval.
<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>
Si la recarga está habilitada, el valor del parámetro reloadInterval determina el retardo entre las comprobaciones para comprobar si un archivo JSP no está actualizado. Por ejemplo, su reloadInterval es 5, el motor JSP comprueba si un archivo JSP no está actualizado, sólo cuando dicha comprobación se ha realizado cinco segundos antes de la solicitud actual del archivo JSP. Cuando se ha superado el reloadInterval, se realiza la comprobación de la recarga y el temporizador del intervalo de recarga se restablece en 0 para dicho archivo JSP. Cuanto más grande sea el valor de reloadInterval, menor será la frecuencia con la que el motor JSP comprobará si es necesario volver a cargar el archivo JSP.
Seguimiento de dependencias
El rastreo de dependencia se establece a través del parámetro de motor JSP trackDependencies.
<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>
- Archivos incluidos estáticamente en el archivo JSP
- Archivos de distintivos a los que se hace referencia en el archivo JSP (excepto los archivos de distintivos que están en los archivos JAR)
- TLD a los que se hace referencia en el archivo JSP (excepto los TLD que hay en los archivos JAR)
Por ejemplo, el archivo toplevel.jsp incluye estáticamente el archivo footer.jspf. Cuando se compila el archivo toplevel.jsp, la vía de acceso del archivo footer.jspf y la indicación de la hora se almacenan en el archivo de clase de toplevel.jsp. Como resultado, se modifica el archivo footer.jspf y se solicita el archivo toplevel.jsp. Ahora que se ha excedido el intervalo de recarga del archivo toplevel.jsp, el motor JSP compara la indicación de la hora almacenada en el archivo de clase con la indicación de la hora del archivo footer.jspf en el disco. Como las indicaciones de la hora son diferentes, se compila el archivo toplevel.jsp y se elige la modificación del archivo footer.jspf. Para que el rastreo de dependencia funcione, el valor trackDependencies se debe establecer en true cuando se solicita un archivo JSP durante el tiempo de ejecución o cuando lo procese el compilador por lotes.
Inhabilitación de la compilación
La inhabilitación de la compilación de tiempo de ejecución de JavaServer Pages se establece mediante el parámetro de motor JSP disableJspRuntimeCompilation.
<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>
Si el parámetro disableJspRuntimeCompilation está establecido en true, el motor JSP durante el tiempo de ejecución no convierte, ni compila archivos JSP; el motor JSP sólo carga los archivos de clase compilados previamente. Los archivos de origen JSP no es necesario que estén presentes para poder cargar los archivos de clase. Cuando esta opción se establece como true, se puede instalar una aplicación sin un origen JSP, pero debe tener archivos de clase precompilados. Existe una propiedad personalizada del contenedor web con el mismo nombre que se puede utilizar para determinar el comportamiento de todos los módulos web instalados en un servidor. Si se establecen la propiedad personalizada del contenedor web y la opción del motor JSP, tiene prioridad la opción del motor JSP. Definir el parámetro disableJspRuntimeCompilation en true establece automáticamente reloadEnabled en false.
Recarga de la secuencia de proceso
La secuencia de proceso que pertenece a la recarga del archivo JSP cuando trackDependencies está establecido en false se muestra en la Figura 1.

Cuando trackDependencies está establecido en true, el motor JSP realiza un proceso de sistema de archivos adicional para determinar si alguna de las dependencias de un archivo JSP se ha modificado desde que se convirtió y compiló por última vez el archivo JSP. En la figura 2 se muestran los procesos adicionales que se realizan en la vía de acceso 'No' del gráfico de flujos etiquetado como "is JSP class file outdated?". Puede observar que la vía de acceso que se obtiene cuando disableJspRuntimeCompilation es true es la vía de acceso más eficaz.
