ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server Java EE運用ガイド

3.5.5 JSP事前コンパイル

JSPは通常、初回リクエスト時にコンパイルを行います。このため、以下の問題があります。

上記の問題に対して、以下の表にあるJSP事前コンパイルを使用すると問題を防ぐことができます。

JSP事前コンパイルの方法

コンパイルする環境

概要

配備時コンパイル

運用環境

Webアプリケーション配備時にコンパイルを行います。

コンパイル結果を含むWebアプリケーションを配備

開発環境

コンパイルした結果をWebアプリケーション内に格納して運用環境に配備します。

開発環境で生成したコンパイル結果を運用環境にコピー

開発環境

コンパイルした結果を運用環境のJSPコンパイル結果格納ディレクトリにコピーします。


各JSP事前コンパイルの方法について以下に説明します。

配備時コンパイル

JSPを含んだWebアプリケーションの配備時に、コンパイルを行う機能です。この機能を使用すると、配備時にWebアプリケーションに含まれているJSPがコンパイルされ、IJServerクラスタに配備されます。
本機能は、以下のどちらかの方法で利用できます。

生成したコンパイル結果は、デフォルトのJSPコンパイル結果格納ディレクトリに格納され、該当するIJServerクラスタの運用時に使用されます。
なお、配備したWebアプリケーションのInterstage Deployment Descriptor(sun-web.xml)で「scratchdir」を指定している場合、配備時コンパイルで生成したコンパイル結果は有効になりません。「配備時コンパイル」を使用する場合には、「scratchdir」を指定しないでください。

JSPコンパイル結果格納ディレクトリについては、「3.4.2 IJServerクラスタのファイル構成」を参照してください。

別環境でコンパイルした結果を使用する方法

別環境(開発環境)でJSP事前コンパイルした結果を、運用環境で使用します。運用環境でJSPコンパイルを行わずにWebアプリケーションを運用できます。

コンパイル結果を含むWebアプリケーションを配備

コンパイル結果をWebアプリケーション内に格納してIJServerクラスタに配備します。
以下に手順を説明します。

  1. jspcコマンドでWebアプリケーション内のJSPをコンパイルします。

  2. 手順1.のコンパイル結果をWEB-INF/classesまたはWEB-INF/lib配下にコピーします。

  3. sun-web.xmlのプロパティusePrecompiledをtrueにします。

  4. Webアプリケーションとしてwarファイルにします。

  5. 手順4.で作成したwarファイルをIJServerクラスタに配備します。

手順2.と手順3.に関係する詳しい説明は、「4.2.3.7 Interstage deployment descriptorのタグの説明」を参照してください。

Webアプリケーション(JspSample)に含まれているJSPをコンパイルし、生成されたクラスファイルをそのままWEB-INF/classes配下に格納する場合

# jspc -webapp c:\temp\JspSample -v -compile -d c:\temp\JspSample\WEB-INF\classes
# yyyy/mm/dd hh:mm:ss org.apache.jasper.JspC processFile
# 情報: Built File: \index.jsp
#

開発環境で生成したコンパイル結果を運用環境にコピー

開発環境でコンパイルした結果を、運用環境のJSPコンパイル結果格納ディレクトリにコピーします。
デフォルトのJSPコンパイル結果格納ディレクトリに対してコピーすると、Interstage環境を破壊してしまう恐れがあります。あらかじめInterstage Deployment Descriptor(sun-web.xml)でJSPコンパイル結果格納ディレクトリを指定し、指定先のディレクトリにコンパイル結果をコピーしてください。
JSPコンパイル結果格納ディレクトリについては、「JSPコンパイル結果格納ディレクトリ」を参照してください。
以下に手順を説明します。

  1. 開発環境において、jspcコマンドでWebアプリケーション内のJSPをコンパイルします。

  2. Webアプリケーションを運用環境に配備します。

  3. 手順1.で生成されたコンパイル結果を、Interstage Deployment Descriptor(sun-web.xml)で指定した運用環境のディレクトリにコピーします。

    注意

    コピーする資源の更新日時は、手順2.を行った日時より後に更新しておく必要があります。「Webアプリケーションの注意事項」の「JSPの入れ替えについて」もあわせて参照してください。

コンパイル結果は、IJServerクラスタの起動(再起動)、またはJSPのオートリロード機能により反映されます。ただし、IJServerクラスタ起動中に手順3.の前にJSPへのリクエスト、または一定間隔のJSPのオートリロード機能が動作した場合は、その処理の延長で対象のJSPのコンパイルが実行されます。

注意

JSP事前コンパイルの注意事項

JSPのコンパイル結果は、IJServerクラスタが読み書きできる必要があります。IJServerクラスタの起動ユーザを変更している場合は、JSPのコンパイル結果に対してIJServerクラスタの起動ユーザが読み書きできる権限を付加してください。
IJServerクラスタの起動ユーザについては、「3.1.7 サービス運用ユーザーのカスタマイズ」を参照してください。