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.

Best practice Best practice: Utilice una herramienta de ensamblaje como, por ejemplo, Rational Application Developer, para modificar los archivos de extensiones y enlace de IBM. Puede convertir archivos de extensiones y enlace en los módulos de XMI a XML utilizando la herramienta de conversión de enlaces y extensiones de IBM para multiplataformas.bprac

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.

Ejemplo de ibm-web-ext.xmi:
<jspAttributes xmi:id="JSPAttribute_1" name="reloadEnabled" value="true"/>
Ejemplo de ibm-web-ext.xml:
<?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>
Supported configurations Supported configurations: Para los archivos de enlace y extensión de IBM®, la extensión del nombre de archivo .xmi o .xml es diferente en función de si se utiliza una aplicación o módulo previo a Java EE 5 o una aplicación o módulo Java™ EE 5 o posterior. Un archivo de enlace o extensión de IBM se denomina ibm-*-ext.xmi o ibm-*-bnd.xmi donde * es el tipo de archivo de extensión o enlace como app, application, ejb-jar o web. Se aplican las condiciones siguientes:
  • En el caso de una aplicación o módulo que utilice una Java EE anterior a la versión 5, la extensión del archivo debe ser .xmi.
  • En el caso de una aplicación que utilice Java EE versión 5 o posterior, la extensión del archivo debe ser .xml. Si los archivos .xmi se incluyen con la aplicación o el módulo, el producto ignora los archivos .xmi.

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.

sptcfg
En la tabla siguiente se incluyen los valores de recarga sugeridos para los entornos de producción y desarrollo.
Tabla 1. Valores de recarga sugeridos para los entornos de producción y desarrollo.. Valores de recarga
Atributo 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.

Ejemplo de ibm-web-ext.xmi:
<jspAttributes xmi:id=JSPAttribute_1 name=reloadInterval value=5/>
Ejemplo de ibm-web-ext.xml:
<?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.

Ejemplo de ibm-web-ext.xmi:
<jspAttributes xmi:id="JSPAttribute_1" name="trackDependencies" value="true"/>
Ejemplo de ibm-web-ext.xmi:
<?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 de parámetro trackDependencies determina si el motor JSP rastrea las modificaciones en las dependencias del archivo JSP solicitado, así como en el propio archivo JSP. El motor JSP hace un seguimiento de los siguientes tres tipos de dependencias:
  • 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)
La información de rastreo de dependencia siempre se incluye en el archivo de clase generado, aunque trackDependencies sea false. El motor JSP o el compilador por lotes no utiliza la información, a menos que el parámetro trackDependencies esté establecido en true. Esto significa que puede habilitar el seguimiento de dependencias sin necesidad de recompilar los archivos JSP.

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.

Ejemplo de ibm-web-ext.xmi:
<jspAttributes xmi:id="JSPAttribute_1" name="disableJspRuntimeCompilation" value="true"/>
Ejemplo de ibm-web-ext.xml:
<?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.

Figura 1. Recargar secuencia de proceso cuando trackDependencies está establecido en false. importante

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.

Figura 2. El proceso de recarga adicional realizado cuando trackDependencies está establecido en true. importante

Icon that indicates the type of topic Reference topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rweb_jspreloading
File name: rweb_jspreloading.html