Hitachi

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


2.5.6 JSP事前コンパイルを使用しない場合のJSPコンパイル結果

JSP事前コンパイルを使用しない場合,JSPファイルのコンパイルは,JSPファイルへの初回アクセス時に実施されます。ここでは,JSP事前コンパイル機能を使用しない場合の,JSPコンパイル結果,およびコンパイル結果の出力先を変更する方法について説明します。

〈この項の構成〉

(1) JSPコンパイル結果のライフサイクル

JSP事前コンパイルを使用しない場合のJSPのコンパイル結果のライフサイクルについて説明します。

コンパイル結果の生成

JSP事前コンパイル機能で事前にJSPファイルのコンパイルを実施していない場合は,JSPコンパイル結果は次のどちらかのタイミングで生成されます。

  • JSPに最初にアクセスするとき

  • DD(web.xml)でJSPに対し<load-on-startup>が指定されている,Webアプリケーションを開始するとき

コンパイル結果の削除

JSPのコンパイル結果は,次のタイミングで削除されます。

  • J2EEアプリケーションのアンデプロイ時

  • J2EEサーバの起動時

  • J2EEサーバの終了時

注※

JSPコンパイル結果を保持しない設定にしている場合,削除されます。なお,J2EEサーバ起動時については,コンパイル結果の削除は,サーバが強制終了された場合に備えて実施されます。

(2) JSPファイルのコンパイル結果の保持

JSP事前コンパイルをしない場合,Webコンテナでは,JSPのコンパイル結果である,Javaソースファイルおよびクラスファイルを,J2EEサーバの再起動時に保持するかどうか設定できます。

JSPファイルのコンパイル結果を保持するための設定は,J2EEサーバのプロパティをカスタマイズして設定します。J2EEサーバの動作設定のカスタマイズについては,「2.5.8 実行環境での設定(J2EEサーバの設定)」を参照してください。

注意事項
Webアプリケーションアンデプロイ時の注意

デフォルトでは,JSPのコンパイル結果を保持する設定になっています。また,JSPコンパイル結果を保持する設定をしていても,Webアプリケーションをアンデプロイすると,JSPのコンパイル結果は削除されます。このため,ユーザは,サーバの再起動時にJSPのコンパイル結果を削除する必要はありません。JSPコンパイル結果を保持する設定でWebコンテナを稼働したあと,JSPコンパイル結果が不要となった場合は,J2EEアプリケーションをアンデプロイしてください。

JSPのコンパイル結果は保持する設定にしておくことをお勧めします。

(3) JSPコンパイル結果の出力先

JSP事前コンパイルを実施していない場合,JSPコンパイル結果はJSP用テンポラリディレクトリに出力されます。

出力されるファイルは次のとおりです。

  1. JSPファイルから生成されたJavaソースファイル

  2. 1.のJavaソースファイルをコンパイルしたクラスファイル

  3. タグファイルから生成されたJavaソースファイル

  4. 3.のJavaソースファイルをコンパイルしたクラスファイル

ここでは,デフォルトの出力先と,出力先のディレクトリ構成について説明します。

なお,出力されるクラス名については,「2.5.7 JSPコンパイル結果のクラス名」を参照してください。

(a) デフォルトの出力先

JSP事前コンパイルを実行していない場合,JSPコンパイル結果は,JSP用テンポラリディレクトリ下に作成される,Webアプリケーション単位のディレクトリに出力されます。デフォルトのJSP用テンポラリディレクトリは次の場所になります。

Windowsの場合

<Application Serverのインストールディレクトリ>\CC\server\repository\<サーバ名称>\web

UNIXの場合

/opt/Cosminexus/CC/server/repository/<サーバ名称>/web

なお,JSP用テンポラリディレクトリは,デフォルト値が設定されていますが,必要に応じて変更できます。JSP用テンポラリディレクトリの変更については,「2.5.8 実行環境での設定(J2EEサーバの設定)」を参照してください。

JSP用テンポラリディレクトリ下にはWebアプリケーション単位でディレクトリが作成され,該当するWebアプリケーション内のJSPコンパイル結果が出力されます。

なお,Webアプリケーション単位のディレクトリは,コンテキストルート名を基にしたディレクトリ名となります。コンテキストルート名にスラッシュ(/),ドル記号($),パーセント(%),プラス記号(+)が含まれる場合は,次に示す文字に変換されます。

変換前の文字

変換後の文字

/

$2f

$

$24

%

$25

+

$2b

例:

JSP用テンポラリディレクトリがデフォルト,コンテキストルート名が「J2EE_AP1/WEB_AP1_war」である場合,該当するWebアプリケーションのJSPコンパイル結果の出力先を次に示します。

  • Windowsの場合

    <Application Serverのインストールディレクトリ>\CC\server\repository\<サーバ名称>\web\J2EE_AP1$2fWEB_AP1_war

  • UNIXの場合

    /opt/Cosminexus/CC/server/repository/<サーバ名称>/web/J2EE_AP1$2fWEB_AP1_war

(b) 出力先のディレクトリ構成

JSPコンパイル結果の出力先ディレクトリ構成を次の図に示します。

図2‒8 JSPコンパイル結果の出力先ディレクトリ構成(JSP事前コンパイルを実行していない場合)

[図データ]

ディレクトリ構成について説明します。

  • タグファイルから生成されたクラスのパッケージ名は次の形式となります。

    WEB-INF/tags下のタグファイルの場合

    org.apache.jsp.tag.web.</WEB-INF/tagsディレクトリ下のパス>

    WEB-INF/lib下のjarファイルに含まれるタグファイルの場合

    org.apache.jsp.tag.meta.<jarファイル名をエンコードした文字列>.<jarファイル内のMETA-INF/tagsディレクトリ下のパス>

  • JSPファイルおよびタグファイルから生成されるクラスファイルの出力先ディレクトリのパス長は,OSの上限によって制限があります。OSの上限を超えるパス長になる場合は,JSPワークディレクトリ名を変更してください。