2.5.2 JSP事前コンパイルの方法
JSP事前コンパイル方法には次の二つがあります。
-
cjjspcコマンドによるJSP事前コンパイル
-
cjstartappコマンドによるJ2EEアプリケーション開始時の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ファイル単位での事前コンパイル
Webアプリケーションに含まれるJSPファイルのうち,指定されたJSPファイルだけをコンパイルします。
-
Webアプリケーション単位での事前コンパイル
Webアプリケーションに含まれるすべてのJSPファイルをコンパイルします。
また,このコマンド実行時に次の内容を設定できます。
-
コンパイル不要なJSPファイルの指定
コンパイル不要なJSPファイルがある場合,あらかじめ不要なファイルを指定しておくことで,事前コンパイルの対象外にできます。指定方法には,コンパイル不要なJSPファイル名をコマンドに一つずつ指定する方法と,コンパイル不要なJSPファイル名をファイルにまとめて記載したファイル(コンパイル対象外リストファイル)をコマンドに指定する方法があります。
-
実行結果リストファイルを出力するかどうかの指定
実行結果リストファイルを出力するかどうかを指定できます。実行結果リストファイルとは,cjjspcコマンドの実行結果を出力したファイルです。コンパイルに成功したJSPファイル,コンパイルに失敗したJSPファイル,およびコンパイル対象外のJSPファイルのパスを一覧で出力します。
-
Javaソースファイルを保存するかどうかの指定
JSPから生成されたJavaソースファイルを保存しておくかどうかを指定できます。
-
JSPコンパイル時のJava言語仕様のバージョンの指定
JSPトランスレーションによって生成されたJavaソースファイルをコンパイルするときのJava言語仕様のバージョンを指定できます。
-
JSPワークディレクトリ名を変更するかどうかの指定
JSPワークディレクトリとは,JSPコンパイル結果を格納するディレクトリのことです。JSPワークディレクトリ名は変更できます。なお,JSPワークディレクトリについては,「2.5.5(2) JSPコンパイル結果の出力先」を参照してください。
-
デフォルトの文字エンコーディングの指定
JSPファイルのデフォルトの文字エンコーディングを指定できます。なお,デフォルトの文字エンコーディングの概要については,「2.6 デフォルトの文字エンコーディング設定機能」を参照してください。
-
JSPデバッグ機能を使用するかどうかの指定
JSPデバッグ機能を使用するかどうかを指定できます。JSPデバッグ機能については「2.4 JSPデバッグ機能」を参照してください。
-
暗黙インポートするクラスの指定
page/tagディレクティブのimport属性暗黙インポート機能を使用して暗黙インポートするクラス名を指定できます。page/tagディレクティブのimport属性暗黙インポート機能については「2.3.7 page/tagディレクティブのimport属性暗黙インポート」を参照してください。
なお,これらの設定は,コマンドのオプションで指定します。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ファイルをコンパイルします。
このコマンドの実行時の動作はあらかじめ設定できます。設定できる内容を次に示します。
-
Javaソースファイルを保存するかどうかの指定
JSPファイルから生成されたJavaソースファイルを保存しておくかどうかを指定できます。
-
JSPコンパイル時のJava言語仕様のバージョンの指定
JSPトランスレーションによって生成されたJavaソースファイルをコンパイルするときのJava言語仕様のバージョンを指定できます。
-
JSPワークディレクトリ名を変更するかどうかの指定
JSPワークディレクトリとは,JSPコンパイル結果を格納するディレクトリのことです。JSPワークディレクトリ名は変更できます。なお,JSPワークディレクトリについては,「2.5.5(2) JSPコンパイル結果の出力先」を参照してください。
-
暗黙インポートするクラスの指定
page/tagディレクティブのimport属性暗黙インポート機能を使用して暗黙インポートするクラス名を指定できます。page/tagディレクティブのimport属性暗黙インポート機能については「2.3.7 page/tagディレクティブのimport属性暗黙インポート」を参照してください。
なお,これらの設定は,J2EEサーバの動作設定のカスタマイズで実施します。J2EEサーバの動作設定のカスタマイズについては,「2.5.8 実行環境での設定(J2EEサーバの設定)」を参照してください。
- 参考
-
cjstartappコマンドを使用したJSP事前コンパイルで,JSPファイルまたはタグファイルのトランスレーション時にエラーが発生すると,エラーメッセージが出力されます。エラーメッセージはWebサーブレットログ,またはメッセージログに出力されます。
- 注意事項
-
JSPから生成されるJavaソースのコンパイルについて
cjjspcコマンドを使用して生成されたクラスファイルは,J2EEサーバでの実行時に使用されます。cjjspcコマンドでは,J2EEサーバで生成されたクラスファイルと同じクラスファイルを生成します。
このため,JSPファイルまたはタグファイルから生成されたJavaソースをコンパイルする場合,-sourceオプションでのJava言語仕様のバージョンの指定,または-classpathオプションでのクラスパスの指定以外はできません。Java言語仕様のバージョンの指定方法についてはマニュアル「アプリケーションサーバ リファレンス コマンド編」の「cjjspc(JSPの事前コンパイル)」を参照してください。