Paramètres de rechargement des fichiers JavaServer Pages (JSP) lors de l'exécution
Les fichiers JavaServer Pages (JSP) peuvent être translatés et compilés lors de l'exécution si le fichier JSP ou ses dépendances sont modifiés. Cette opération est appelée "rechargement JSP".

Le rechargement JSP est activé via le paramètre reloadEnabled du moteur JSP dans le fichier WEB-INF/ibm-web-ext.xmi ou 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>

Toutefois, un module Java EE 5 ou version ultérieure peut exister dans une application qui inclut des fichiers antérieurs à Java EE 5 et utilise l'extension de nom de fichier .xmi.
Les fichiers ibm-webservices-ext.xmi, ibm-webservices-bnd.xmi, ibm-webservicesclient-bnd.xmi, ibm-webservicesclient-ext.xmi et ibm-portlet-ext.xmi continuent d'utiliser les extensions de fichier .xmi.
sptcfgAttribut de configuration | Paramètre d'environnement de production | Paramètre d'environnement de développement |
---|---|---|
reloadEnabled | false | true |
reloadInterval | non dispo (ignoré si reloadEnabled a pour valeur false) | environ 5 secondes |
trackDependencies | non dispo (ignoré si reloadEnabled a pour valeur false) | true - vous pouvez définir la valeur false pour améliorer le temps de réponse si les dépendances ne sont pas modifiées |
disableJspRuntimeCompilation | true - vous pouvez définir la valeur false si les fichiers JSP ne sont pas précompilés et par conséquent, ne doivent pas être compilés lors de la première requête | false |
La valeur par défaut du paramètre reloadEnabled est true. Si le paramètre reloadEnabled a pour valeur true, un fichier JSP est rechargé lors de l'exécution si son horodatage et celui de son fichier classe ne sont pas identiques. De plus, si le paramètre trackDependencies a pour valeur true, le fichier JSP est rechargé si l'horodatage de l'une de ses dépendances a changé depuis la dernière génération du fichier classe JSP. Si le paramètre reloadEnabled a pour valeur false, un fichier JSP est tout de même compilé si nécessaire lors de la première requête sauf si le paramètre disableJspRuntimeCompilation a la valeur true. Par exemple, lorsque disableJspRuntimeCompilation et reloadEnabled ont pour valeur false, le fichier JSP est compilé lors de la première requête si la date du fichier classe n'est pas à jour. Il n'est pas compilé lors des requêtes suivantes même si le fichier source JSP est modifié ou si le fichier classe est supprimé, sauf si reloadEnabled a pour valeur true.
Intervalle de rechargement
L'intervalle de rechargement est défini avec le paramètre du moteur 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 le rechargement est activé, la valeur du paramètre reloadInterval définit l'intervalle entre les vérifications permettant de déterminer si un fichier JSP n'est plus à jour. Par exemple, si reloadInterval a pour valeur 5, le moteur JSP vérifie si un fichier JSP est à jour uniquement si une telle vérification a été effectuée plus de cinq secondes avant la requête du fichier JSP. Une fois la valeur de reloadInterval dépassée, une vérification de rechargement est effectuée et le chronomètre de l'intervalle de rechargement est réinitialisé pour ce fichier JSP. Plus la valeur de reloadInterval est élevée, moins le moteur JSP vérifie s'il est nécessaire de recharger un fichier JSP.
Suivi des dépendances
Le suivi des dépendances est défini avec le paramètre du moteur 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>
- les fichiers inclus statiquement dans le fichier JSP,
- les fichiers de balises référencés dans le fichier JSP (à l'exception des fichiers de balises qui se trouvent dans les fichiers JAR),
- les fichiers de balises référencés dans le fichier JSP (à l'exception des fichiers de balises qui se trouvent dans les fichiers JAR),
Par exemple, le fichier toplevel.jsp inclut statiquement le fichier footer.jspf. Lorsque le fichier toplevel.jsp est compilé, le chemin d'accès au fichier footer.jspf et son horodatage sont stockés dans le fichier classe de toplevel.jsp. Ainsi, le fichier footer.jspf est modifié et le fichier toplevel.jsp est demandé. Une fois l'intervalle de rechargement pour le fichier toplevel.jsp dépassé, le moteur JSP compare l'horodatage stocké dans le fichier classe à l'horodatage du fichier footer.jspf sur le disque. Etant donné que les horodatages sont différents, le fichier toplevel.jsp est compilé et inclut la modification apportée au fichier footer.jspf. Pour que le suivi des dépendances fonctionne, la valeur de trackDependencies doit être true lorsque le fichier JSP est demandé lors de l'exécution ou lorsqu'il est traité par le compilateur par lots.
Désactivation de la compilation
La désactivation de la compilation des pages JSP lors de l'exécution est définie avec le paramètre du moteur 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 le paramètre disableJspRuntimeCompilation a pour valeur true, le moteur JSP ne convertit ni ne compile les fichiers JSP lors de l'exécution ; il charge uniquement les fichiers classe précompilés. Il n'est pas nécessaire que les fichiers source JSP existent pour le chargement des fichiers classe. Si cette option a pour valeur true, vous pouvez installer une application qui ne possède pas de source JSP ; elle doit toutefois avoir des fichiers classe précompilés. Une propriété personnalisée de conteneur Web du même nom permet de déterminer le comportement de tous les modules Web installés sur un serveur. Si la propriété personnalisée de conteneur Web et l'option du moteur JSP sont toutes les deux définies, l'option du moteur JSP est prioritaire. Si le paramètre disableJspRuntimeCompilation a pour valeur true, le paramètre reloadEnabled prend automatiquement la valeur false.
Séquence de traitement du rechargement
La séquence de traitement liée au rechargement d'un fichier JSP lorsque le paramètre trackDependencies a pour valeur false est illustrée par la figure 1.

Lorsque le paramètre trackDependencies a pour valeur true, le moteur JSP procède à des traitements supplémentaires du système de fichiers pour déterminer si l'une des dépendances d'un fichier JSP a changé depuis la dernière conversion et la dernière compilation du fichier JSP. La figure 2 montre les traitements supplémentaires effectués sur le chemin 'No' de l'organigramme intitulé "Le fichier de classe JPS a-t-il été mis à jour ?". Vous constaterez que le chemin emprunté lorsque le paramètre disableJspRuntimeCompilation a pour valeur true est le plus efficace.
