ページの先頭行へ戻る
Interstage Application Server V12.0.0 Java EE 7 設計・構築・運用ガイド
FUJITSU Software

2.6.8 JSP事前コンパイル

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

これらの問題は、JSP事前コンパイル機能を使用することにより回避することができます。

JSP事前コンパイル機能には、以下の3種類の方法が存在します。

JSP事前コンパイルの方法

コンパイルする環境

JSPコンパイル結果格納ディレクトリ

概要

配備時コンパイル

運用環境

変更不要

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

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

開発環境

変更不要

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

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

開発環境

glassfish-web.xmlのscratchdirプロパティで変更必要

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

JSP事前コンパイルの方法について、それぞれ説明します。

配備時コンパイル

JSPを含んだWebアプリケーションの配備時に、コンパイルを行う機能です。この機能を使用すると、配備時にWebアプリケーションに含まれているJSPがコンパイルされ、IJServerクラスタまたはInterstage Java EE 7 DASサービスに配備されます。

本機能は、以下の方法で利用できます。

生成されたコンパイル結果は、デフォルトのJSPコンパイル結果格納ディレクトリに格納され、該当するIJServerクラスタまたはInterstage Java EE 7 DASサービスの運用時に使用されます。

なお、配備したWebアプリケーションのInterstage Web application deployment descriptor(glassfish-web.xml)で「scratchdir」を指定している場合、配備時コンパイルで生成したコンパイル結果は有効になりません。配備時コンパイルを使用する場合には、「scratchdir」を指定しないでください。

参照

注意

ディレクトリ配備を行う場合、IJServerクラスタが停止していると、JSPの配備時コンパイルを行ってもJSP事前コンパイル結果がIJServerクラスタに反映されません。そのため、IJServerクラスタ停止時にディレクトリ配備を行う場合は「コンパイル結果を含むWebアプリケーションを配備」でJSP事前コンパイルを実施するようにしてください。

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

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

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

コンパイル結果をWebアプリケーション内に格納してIJServerクラスタまたはInterstage Java EE 7 DASサービスに配備します。

以下に手順を説明します。

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

  2. 手順1.のコンパイル結果をWEB-INF/classesにコピー、またはjarファイルに格納してそのjarファイルをWEB-INF/lib配下にコピーします。なお、生成されたクラスファイルだけでなく、パッケージ名に該当するディレクトリも含めてください。

  3. WEB-INF/glassfish-web.xmlのプロパティusePrecompiledをtrueにします。

  4. Webアプリケーションとしてwarファイルにし、IJServerクラスタまたはInterstage Java EE 7 DASサービスに配備します。なお、作成したwarファイルをearファイルに含めて使用することや、warファイルにせずにディレクトリ配備することも可能です。

    Webアプリケーション(JspSample)に含まれているJSPをコンパイルし、生成されたクラスファイルをそのままWEB-INF/classes配下に格納する場合のjspcコマンドの実行例(手順1.と手順2.を同時に実施しています)

    C:\Interstage\F3FMisje7\glassfish\bin\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

    /opt/FJSVisje7/glassfish/bin/jspc -webapp /tmp/JspSample -v -compile -d /tmp/JspSample/WEB-INF/classes
    yyyy/mm/dd hh:mm:ss org.apache.jasper.JspC processFile
    情報: Built File: /index.jsp

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

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

デフォルトのJSPコンパイル結果格納ディレクトリに対してコピーすると、Interstage環境を破壊してしまう恐れがあります。そのため、あらかじめInterstage Web application deployment descriptor(glassfish-web.xml)のscratchdirでJSPコンパイル結果格納ディレクトリを指定し、指定先のディレクトリにコンパイル結果をコピーしてください。格納したJSPコンパイル結果は、IJServerクラスタやInterstage Java EE 7 DASサービスの起動(再起動)時に反映されます。

以下に手順を説明します。

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

  2. WEB-INF/glassfish-web.xmlのプロパティscratchdirを指定します。

  3. Webアプリケーションとしてwarファイルにし、IJServerクラスタまたはInterstage Java EE 7 DASサービスに配備します。なお、作成したwarファイルをearファイルに含めて使用することや、warファイルにせずにディレクトリ配備することも可能です。

  4. 手順1.で生成されたコンパイル結果を、手順2.で指定した運用環境のディレクトリにコピーします。

    注意

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

    • 手順4の前にJSPへのリクエスト、または一定間隔のJSPのオートリロード機能が動作した場合は、その処理の延長で対象のJSPのコンパイルが実行されます。

参照

JSPコンパイル結果格納ディレクトリについては、「2.6.9 JSPコンパイル結果格納ディレクトリ」を参照してください。