ページの先頭行へ戻る
Interstage Application Server V13.0.0 GlassFish 設計・構築・運用ガイド
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がコンパイルされ、GlassFish ServerクラスターまたはDASに配備されます。

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

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

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

参照

注意

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

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

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

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

コンパイル結果をWebアプリケーション内に格納してGlassFish Serverクラスターまたは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ファイルにし、GlassFish ServerクラスターまたはDASに配備します。なお、作成したwarファイルをearファイルに含めて使用することや、warファイルにせずにディレクトリー配備することも可能です。

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

    C:\Interstage\glassfish5\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/FJSViaps/glassfish5/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環境を破壊してしまう恐れがあります。そのため、あらかじめGlassFish Web application deployment descriptor(glassfish-web.xml)のscratchdirでJSPコンパイル結果格納ディレクトリーを指定し、指定先のディレクトリーにコンパイル結果をコピーしてください。格納したJSPコンパイル結果は、GlassFish ServerクラスターやDASの起動(再起動)時に反映されます。

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

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

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

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

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

    注意

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

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

参照

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