Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(Webコンテナ)


2.5.2 JSP事前コンパイルの方法

JSP事前コンパイル方法には次の二つがあります。

ここでは,JSP事前コンパイルを実行するコマンドの概要と,コンパイル方法について説明します。なお,コンパイル方法は,どの場面でJSPファイルを事前にコンパイルするかによって異なります。JSP事前コンパイルを適用する場面とコンパイル方法については,「2.5.3 JSP事前コンパイルの適用例」を参照してください。

〈この項の構成〉

(1) コマンドの概要

ここでは,JSP事前コンパイルを実施するための前提条件と,JSP事前コンパイル実行時に必要なファイル,および実行後に生成されるファイルについて説明します。

前提条件

JSP事前コンパイルを実施するためには,コンパイルするJSPファイルがWebアプリケーションのルートディレクトリ以下,またはそのサブディレクトリ以下に格納されていることが前提です。

JSP事前コンパイルに必要なファイル

JSP事前コンパイルを実施するためには,次に示すファイルが必要です。

  • JSPファイル(JSP 1.1,JSP 1.2,JSP 2.0,JSP 2.1,JSP 2.2,またはJSP 2.3)※1

  • JSP 2.0仕様,JSP 2.1仕様,JSP 2.2仕様,またはJSP 2.3仕様に準拠したタグファイル

  • JSPファイルおよびタグファイルから静的にインクルードされるファイル

  • TLDファイル※2

  • web.xml※2,※3

  • コンパイルに必要なクラスライブラリ

注※1 

JSPファイルとは,次に示すファイルを指します。

  • 拡張子が.jspまたは.jspxであるファイル(.jspxはJSP 2.0以降の場合だけ)

  • web.xmlの<jsp-file>タグに指定されたファイル

  • web.xmlの<jsp-property-group><url-pattern>タグに合致するファイル(JSP 2.0以降の場合だけ)

注※2 

JSP事前コンパイル実行時にDTDまたはXMLスキーマに従っているかどうかが検証されます。

注※3 

web.xmlがない場合,Webアプリケーションのバージョンを3.1と見なしてコンパイルが実行されます。

JSP事前コンパイル後に生成されるファイルJSPコンパイル結果

JSPファイルやタグファイルから生成された,JavaソースファイルおよびクラスファイルをJSPコンパイル結果といいます。JSP事前コンパイルを実施すると,JSPワークディレクトリに次に示すJSPコンパイル結果が生成されます。

  • JSPファイルから生成されたJavaソースファイルおよびクラスファイル

  • タグファイルから生成されたJavaソースファイルおよびクラスファイル

なお,JSP事前コンパイル実行時には,Javaソースファイルを保存しておくかどうかを設定できます。

(2) cjjspcコマンドによるJSP事前コンパイル

cjjspcコマンドは,JSP事前コンパイルを実施するためのコマンドです。アプリケーションの開発時などにこのコマンドを実施すると,Webアプリケーションに含まれるJSPファイルをコンパイルできます。cjjspcコマンドによるJSP事前コンパイルには,次の二つの方法があります。

また,このコマンド実行時に次の内容を設定できます。

なお,これらの設定は,コマンドのオプションで指定します。JSPの事前コンパイルのコマンド(cjjspcコマンド)の使い方については,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「cjjspc(JSPの事前コンパイル)」を参照してください。

注意事項

JavaVM起動オプションの変更

環境変数「CJ_CMD_JVM_ARGS」を設定すると,cjjspcコマンドが動作するJavaVMの起動オプションを変更できます。

デフォルトではJavaVMの起動オプションに「-Xmx512m」(Javaヒープメモリ領域の最大値が512MB)が設定されています。cjjspcコマンドで大規模なWebアプリケーションをコンパイルする場合,Javaヒープメモリ領域の最大値を超え,java.lang.OutOfMemoryErrorが発生するおそれがあります。したがって,大規模なWebアプリケーションをコンパイルする場合は,あらかじめ環境変数「CJ_CMD_JVM_ARGS」に,適切なJavaヒープメモリ領域を指定する必要があります。

参考
  • cjjspcコマンドを使用したJSP事前コンパイルで,JSPファイルまたはタグファイルのトランスレーション時にエラーが発生すると,エラーメッセージが出力されます。エラーメッセージはコンソールに出力されます。

  • コマンド実行時に標準出力または標準エラー出力にログを出力します。ログ出力の結果をファイルに残す場合は,コマンドの出力をファイルにリダイレクトしてください。

    ログ出力の結果をファイルに残す場合の指定例を示します。

    Windowsの場合の指定例

    > cjjspc -root D:\app\webapp1 1> .\stdout.log 2> .\stderr.log

    UNIXの場合の指定例

    # cjjspc -root /app/webapp1 1> ./stdout.log 2> ./stderr.log

(3) cjstartappコマンドによるJ2EEアプリケーション開始時のJSP事前コンパイル

cjstartappコマンドは,J2EEアプリケーションを開始するためのコマンドです。cjstartappコマンドに,JSP事前コンパイルをするオプションを指定すると,JSPの事前コンパイルを実施してから,J2EEアプリケーションが開始されます。J2EEアプリケーション開始時のJSP事前コンパイルでは,J2EEアプリケーションに含まれるすべてのJSPファイルをコンパイルします。

このコマンドの実行時の動作はあらかじめ設定できます。設定できる内容を次に示します。

なお,これらの設定は,J2EEサーバの動作設定のカスタマイズで実施します。J2EEサーバの動作設定のカスタマイズについては,「2.5.8 実行環境での設定(J2EEサーバの設定)」を参照してください。

参考

cjstartappコマンドを使用したJSP事前コンパイルで,JSPファイルまたはタグファイルのトランスレーション時にエラーが発生すると,エラーメッセージが出力されます。エラーメッセージはWebサーブレットログ,またはメッセージログに出力されます。

注意事項

JSPから生成されるJavaソースのコンパイルについて

cjjspcコマンドを使用して生成されたクラスファイルは,J2EEサーバでの実行時に使用されます。cjjspcコマンドでは,J2EEサーバで生成されたクラスファイルと同じクラスファイルを生成します。

このため,JSPファイルまたはタグファイルから生成されたJavaソースをコンパイルする場合,-sourceオプションでのJava言語仕様のバージョンの指定,または-classpathオプションでのクラスパスの指定以外はできません。Java言語仕様のバージョンの指定方法についてはマニュアル「アプリケーションサーバ リファレンス コマンド編」の「cjjspc(JSPの事前コンパイル)」を参照してください。