JavaServer Pages (JSP) ランタイム再ロード設定
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 ファイルは必要に応じて最初の要求でコンパイルされます。 例えば、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 ファイルが期限切れになっているかどうかの検査を、 そのような検査が最後に行われてから JSP ファイルに対する現行要求までに 、5 秒より長く経過している場合にのみ実行します。 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 ファイルは、静的に footer.jspf ファイルを組み込みます。 toplevel.jsp ファイルがコンパイルされると、 footer.jspf ファイルに対するパスとそのタイム・スタンプは toplevel.jsp のクラス・ファイルに保管されます。 結果として、footer.jspf ファイルは変更され、toplevel.jsp ファイルが要求されます。 これで、toplevel.jsp ファイルの再ロード間隔を超えると、 JSP エンジンはクラス・ファイルに保管されるタイム・スタンプとディスク上 の footer.jspf ファイル・タイム・スタンプとを比較します。 タイム・スタンプが異なるため、toplevel.jsp ファイルはコンパイルされ、 footer.jspf ファイルへの変更を選出します。 依存関係トラッキングを行うには、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 ソース・ファイルは必ずしも必要ありません。 このオプションが true に設定されると、JSP ソースなしでアプリケーションをインストールすることができますが、 アプリケーションにはプリコンパイルされたクラス・ファイルを必要とします。 同じ名前の Web コンテナー・カスタム・プロパティーがあり、 このプロパティーを使用して、サーバーにインストールされたすべての web モジュールの振る舞いを決定します。 Web コンテナー・カスタム・プロパティーと JSP エンジン・オプションの両方が設定されている場合、 JSP エンジン・オプションが優先されます。disableJspRuntimeCompilation パラメーターを true に設定すると、 自動的に reloadEnabled が false に設定されます。
再ロード処理シーケンス
図 1 に、 trackDependencies が false の場合の JSP ファイル再ロードに関係する処理シーケンスを示します。

trackDependencies が true の場合、 JSP エンジンは追加のファイル・システム処理を行い、JSP ファイルが最後に変換され、コンパイルされて以来、 JSP ファイルの依存関係が変更されていないかを判別します。 図 2 に、「is JSP class file outdated?」とラベルが付けられたフローチャートの「No」パスで実行される追加の処理を示します。disableJspRuntimeCompilation が true である場合にたどるパスが、最も効果的なパスであることがわかります。
