Laufzeiteinstellungen für das erneute Laden von JSP-Dateien
JSP-Dateien können zur Laufzeit übersetzt und kompiliert werden, wenn die JSP-Datei oder ihre Abhängigkeiten geändert werden. Dieser Vorgang wird als erneutes Laden der JSPs bezeichnet.

Das erneute Laden von JSPs wird über den Parameter "reloadEnabled" der JSP-Engine in der Datei WEB-INF/ibm-web-ext.xmi oder WEB-INF/ibm-web-ext.xml aktiviert.
<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>

Ein Modul von Java EE Version 5 oder einer höheren Version kann jedoch in einer Anwendung, die Dateien einer älteren Java EE-Version als Version 5 enthält, koexistieren.
Die Dateien ibm-webservices-ext.xmi, ibm-webservices-bnd.xmi, ibm-webservicesclient-bnd.xmi, ibm-webservicesclient-ext.xmi und ibm-portlet-ext.xmi können die Dateierweiterung ".xmi" weiterhin verwenden.
sptcfgKonfigurationsattribut | Einstellung für Produktionsumgebung | Einstellung für Entwicklungsumgebung |
---|---|---|
reloadEnabled | false | true |
reloadInterval | nicht verfügbar (wird ignoriert, wenn reloadEnabled = false) | ungefähr 5 Sekunden |
trackDependencies | nicht verfügbar (wird ignoriert, wenn reloadEnabled = false) | true. Alternativ dazu kann "false" verwendet werden, um die Antwortzeit zu verbessern, wenn Abhängigkeiten nicht geändert werden. |
disableJspRuntimeCompilation | true - Alternativ kann "false" verwendet werden, wenn JSP-Dateien nicht vorkompiliert werden und daher bei der ersten Anforderung kompiliert werden müssen. | false |
Der Standardwert für den Parameter "reloadEnabled" ist "true". Wenn der Parameter "reloadEnabled" auf "true" gesetzt ist, wird zur Laufzeit eine JSP-Datei erneut geladen, wenn die JSP-Datei und ihre Klassendatei nicht dieselbe Zeitmarke haben. Ist außerdem "trackDependencies" auf "true" gesetzt, wird die JSP-Datei erneut geladen, wenn die Zeitmarke einer der Abhängigkeiten seit dem letzten Generieren der JSP-Klasse geändert wurde. Hat "reloadEnabled" den Wert "false", wird eine JSP-Datei, falls nötig, noch bei der ersten Anforderung kompiliert, es sei denn, der Parameter "disableJspRuntimeCompilation" hat den Wert "true". Wenn z. B. "disableJspRuntimeCompilation" und "reloadEnabled" den Wert "false" haben, wird eine JSP-Datei bei der ersten Anforderung kompiliert, wenn die Klassendatei veraltet ist. Sie wird bei nachfolgenden Anforderungen nicht kompiliert, selbst wenn die JSP-Quellendatei geändert oder die Klassendatei gelöscht wird, es sei denn, "reloadEnabled" hat den Wert "true".
Intervall für erneutes Laden
Das Intervall für erneutes Laden wird über den Parameter "reloadInterval" der JSP-Engine gesetzt.
<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>
Wenn die Option für erneutes Laden aktiviert ist, bestimmte der Wert des Parameters "reloadInterval" die Wartezeit zwischen den Überprüfungen einer JSP-Datei. Wenn der Parameter "reloadInterval" beispielsweise den Wert 5 hat, prüft die JSP-Engine erst dann, ob eine JSP-Datei veraltet ist, wenn die letzte Prüfung dieser Art mehr als fünf Sekunden zurückliegt. Nach Ablauf des Intervalls für erneutes Laden wird eine Prüfung durchgeführt und der Zeitgeber für erneutes Laden für diese Datei auf 0 zurückgesetzt. Je höher der Wert von reloadInterval ist, desto seltener prüft die JSP-Engine, ob eine JSP-Datei erneut geladen werden muss.
Überwachung von Abhängigkeiten
Die Überwachung von Abhängigkeiten wird über den Parameter "trackDependencies" der JSP-Engine konfiguriert.
<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>
- Dateien, die statisch in die JSP-Datei aufgenommen werden
- Tag-Dateien, die in der JSP-Datei referenziert werden (ausgenommen Tag-Dateien, die sich in JAR-Dateien befinden)
- TLD-Dateien, die in der JSP-Datei referenziert werden (ausgenommen TLD-Dateien, die sich in JAR-Dateien befinden)
Beispielsweise schließt die Datei toplevel.jsp die Datei footer.jspf statisch ein. Wenn die Datei toplevel.jsp kompiliert wird, werden der Pfad zur Datei footer.jspf und deren Zeitmarke in der Klassendatei toplevel.jsp gespeichert. Daraufhin wird die Datei footer.jspf geändert und die Datei toplevel.jsp wird angefordert. Da das Intervall für erneutes Laden für die Datei toplevel.jsp überschritten wurde, vergleicht die JSP-Engine die Zeitmarke, die in der Klassendatei gespeichert wurde, mit der Zeitmarke der Datei footer.jspf auf dem Datenträger. Da die Zeitmarken nicht gleich sind, wird die Datei toplevel.jsp kompiliert und die geänderten Daten werden in die Datei footer.jspf gestellt. Damit die Überwachung von Abhängigkeiten funktionieren kann, muss der Wert von "trackDependencies" auf "true" gesetzt sein, wenn eine JSP-Datei zur Laufzeit angefordert oder vom Stapelcompiler verarbeitet wird.
Kompilierung inaktivieren
Die Inaktivierung der Laufzeitkompilierung von JSPs wird über den Parameter disableJspRuntimeCompilation der JSP-Engine durchgeführt.
<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>
Wenn der Parameter "disableJspRuntimeCompilation" auf "true" gesetzt ist, übersetzt und kompiliert die JSP-Engine zur Laufzeit keine JSP-Dateien, sie lädt nur die vorkompilierten Klassendateien. Es müssen keine JSP-Quellendateien vorhanden sein, damit die Klassendateien geladen werden. Wenn diese Option den Wert "true" hat, können Sie eine Anwendung ohne JSP-Quelle installieren, die Anwendung muss jedoch vorkompilierte Klassendateien besitzen. Es gibt eine angepasste Eigenschaft für Web-Container mit demselben Namen, das verwendet wird, um das Verhalten aller im Server installierten Webmodule zu bestimmen. Wenn sowohl die angepasste Eigenschaft des Web-Containers als auch die Option der JSP-Engine gesetzt werden, hat die Option der JSP-Engine Vorrang. Wenn Sie den Parameter "disableJspRuntimeCompilation" auf "true" setzen, wird der Parameter "reloadEnabled" automatisch auf "false" gesetzt.
Verarbeitungsreihenfolge für erneutes Laden
Die Verarbeitungsreihenfolge für das erneute Laden von JSP-Dateien bei Verwendung des Wertes "false" für "trackDependencies" ist in Abbildung 1 veranschaulicht.

Wenn "trackDependencies" auf "true" gesetzt ist, führt die JSP-Engine weitere Dateisystemprozesse aus, um festzustellen, ob eine der JSP-Abhängigkeiten seit der letzten Übersetzung und Kompilierung der JSP-Datei geändert wurde. Abbildung 2 zeigt die zusätzlichen Prozesse, die im Nein-Pfad des Ablaufdiagramms "Ist die JSP-Klassendatei veraltet?" ausgeführt werden. Sie können sehen, dass der Pfad, der bei der Einstellung disableJspRuntimeCompilation=true genommen wird, am effizientesten ist.
