JavaServer Pages (JSP) ランタイム再ロード設定

JavaServer Pages ファイルまたはその依存関係が変更されると、 JSP ファイルは、実行時に変換およびコンパイルされる場合があります。これは JSP 再ロードと呼ばれます。

ベスト・プラクティス ベスト・プラクティス: Rational Application Developer などの アセンブリー・ツールを使用して、IBM 拡張ファイルおよびバインディング・ファイルを 変更します。 IBM Bindings and Extensions Conversion Tool for Multi-Platforms を使用すると、 モジュール内の拡張ファイルおよびバインディング・ファイルを XMI から XML に変換できます。bprac

JSP 再ロードは、WEB-INF/ibm-web-ext.xmi ファイルまたは WEB-INF/ibm-web-ext.xml ファイルの reloadEnabled JSP エンジン・パラメーターを介して使用可能になります。

ibm-web-ext.xmi の例:
<jspAttributes xmi:id="JSPAttribute_1" name="reloadEnabled" value="true"/>
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>
サポートされる構成 サポートされる構成: IBM® 拡張ファイル およびバインディング・ファイルの場合、.xmi または .xml ファイル名拡張子は、Java EE 5 より前のアプリケーションまたはモジュールを使用しているか、 あるいは Java™ EE 5 以降のアプリケーションまたは モジュールを使用しているかによって異なります。IBM 拡張 ファイルまたはバインディング・ファイルは、ibm-*-ext.xmi または ibm-*-bnd.xmi という名前です。 ここで * は拡張ファイルまたはバインディング・ファイルのタイプ (app、application、ejb-jar、 または web など) です。以下の条件が適用されます。
  • バージョン 5 より前の Java EE バージョンを使用するアプリケーションまたはモジュールの場合、ファイル拡張子は .xmi でなければなりません。
  • Java EE 5 以降を使用するアプリケーションまたはモジュールの場合、ファイル拡張子は .xml でなければなりません。.xmi ファイルがアプリケーションまたはモジュールに組み込まれている場合、.xmi ファイルは無視されます。

ただし、Java EE 5 以降のモジュールが、Java EE 5 より前のファイルを含み .xmi ファイル名拡張子を使用する アプリケーション内に存在することは可能です。

ibm-webservices-ext.xmiibm-webservices-bnd.xmiibm-webservicesclient-bnd.xmiibm-webservicesclient-ext.xmi、 および ibm-portlet-ext.xmi ファイルは、引き続き .xmi ファイル拡張子 を使用します。

sptcfg
次の表に、実稼働環境および開発環境での推奨される再ロード設定を 示します。
表 1. 実稼働環境および開発環境での推奨される再ロード設定. 再ロード設定
構成属性 実稼働環境の設定 開発環境の設定
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 エンジン・パラメーター を介して設定されます。

ibm-web-ext.xmi の例:
<jspAttributes xmi:id=JSPAttribute_1 name=reloadInterval value=5/>
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>

再ロードが使用可能になっている場合は、reloadInterval パラメーター値により、 JSP ファイルが期限切れになっているかどうかを確認するための検査の間隔が決まります。例えば、 reloadInterval が 5 だとすると、JSP エンジンは、JSP ファイルが期限切れになっているかどうかの検査を、 そのような検査が最後に行われてから JSP ファイルに対する現行要求までに 、5 秒より長く経過している場合にのみ実行します。 reloadInterval を超えると、再ロード検査が実行され、 その JSP ファイルの再ロード・インターバル・タイマーは 0 にリセットされます。 reloadInterval が大きくなればなるほど、 JSP エンジンが JSP ファイル再ロードの必要性を検査する頻度は少なくなります。

依存関係トラッキング

依存関係トラッキングは、 以下の trackDependencies JSP エンジン・パラメーターを介して設定されます。

ibm-web-ext.xmi の例:
<jspAttributes xmi:id="JSPAttribute_1" name="trackDependencies" value="true"/>
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>
再ロードが使用可能な場合、 trackDependencies パラメーター値によって、JSP エンジンが要求された JSP ファイルの依存関係と、 JSP ファイル自体に対する変更をトラッキングするかどうかが決まります。 JSP エンジンによってトラックされる依存関係のタイプは、以下の 3 つです。
  • JSP ファイルに静的に組み込まれたファイル
  • JSP ファイルで参照されるタグ・ファイル (JAR ファイルにあるタグ・ファイルを除く)
  • JSP ファイルで参照される TLD (JAR ファイルにある TLD を除く)
依存関係トラッキング情報は、trackDependencies が false であっても、 生成されたクラス・ファイルに常時組み込まれています。 その情報は、trackDependencies パラメーターが true でない限り、JSP エンジンまたはバッチ・コンパイラーによって使用されません。 つまり、JSP ファイルを再コンパイルしなくても、依存関係トラッキングを使用可能にすることができます。

例えば、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 エンジン・パラメーターを使用して設定します。

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

disableJspRuntimeCompilation パラメーターが true に設定されている場合、 JSP エンジンは実行時に JSP ファイルの変換およびコンパイルを行わず、プリコンパイルされたクラス・ファイルのみをロードします。 クラス・ファイルをロードするために、JSP ソース・ファイルは必ずしも必要ありません。 このオプションが true に設定されると、JSP ソースなしでアプリケーションをインストールすることができますが、 アプリケーションにはプリコンパイルされたクラス・ファイルを必要とします。 同じ名前の Web コンテナー・カスタム・プロパティーがあり、 このプロパティーを使用して、サーバーにインストールされたすべての web モジュールの振る舞いを決定します。 Web コンテナー・カスタム・プロパティーと JSP エンジン・オプションの両方が設定されている場合、 JSP エンジン・オプションが優先されます。disableJspRuntimeCompilation パラメーターを true に設定すると、 自動的に reloadEnabled が false に設定されます。

再ロード処理シーケンス

図 1 に、 trackDependencies が false の場合の JSP ファイル再ロードに関係する処理シーケンスを示します。

図 1. trackDependencies が false の場合の再ロード処理シーケンス重要

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

図 2. trackDependencies が true の場合に実行されるその他の再ロード処理重要

トピックのタイプを示すアイコン 参照トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rweb_jspreloading
ファイル名:rweb_jspreloading.html