JSP/サーブレット編
JSPの起動を高速化する

Wingsプロジェクト
佐藤治夫
2005/5/18

 JSPは、初回の呼び出し時にWebアプリケーションコンテナによってサーブレットへと変換、コンパイルされ、実行されます。そのため、初回アクセス時は2回目以降よりも低速となります。本TIPSでは、初回実行時の低速化を解消する「jsp_precompile」パラメータを紹介します。「jsp_precompile」パラメータを利用すると、JSPを実行前にコンパイルし、初回呼び出し時の処理を高速化できます。

■「jsp_precompile」パラメータ

 「jsp_precompile」パラメータは「JavaServer Pages 2.0仕様書」の「JSP.11.4 Precompilation」に定義されています。「jsp_precompile」パラメータを受け取ったWebアプリケーションコンテナは、JSPを実行せずにJSPのコンパイルのみを行います(JSP仕様準拠のWebアプリケーションコンテナは、JSP実行前コンパイルのプロトコルを実装する必要があります)。

 「jsp_precompile」パラメータは、以下のいずれかの書式でHTTPリクエストを使用してWebアプリケーションコンテナに通知します。以下のどの書式を使用しても、JSPを実行せずにJSPのコンパイルのみを行います。

 3行目の例のようにfoo=barという書式で任意のクエリーストリングを付与することもできますが、動作はほかの書式と同様です。

http://hostname/コンテキスト名/JSPファイル名?jsp_precompile
http://hostname/コンテキスト名/JSPファイル名?jsp_precompile=true
http://hostname/コンテキスト名/JSPファイル名?foo=bar&jsp_precompile=true

注:本TIPSで紹介する内容は、Webアプリケーションコンテナを使用してJSPを実行前にコンパイルする方法です。Webアプリケーションのデプロイ前にJSPファイルをまとめてコンパイルし、WARファイルにパッケージングする場合などは、Apache Jakarta Antの「jspcタスク」などのツールを使用しください。Antについては 「Antでwarファイルを作成する」を参照してください。

■動作確認

 それでは実際にTomcat5.5を使って「jsp_precompile」パラメータの動作確認をしてみましょう。


(1)JSPファイルを作成する

 まず、JSPファイルを作成します。ここでは、$CATALINA_HOME/webapps/jsp-examples/TestComp.jspというJSPファイルを作成します。内容は以下のとおりです。

TestComp.jsp
<%@ page language="java" pageEncoding="Windows-31J" contentType="text/html; charset=Shift_JIS" %>

<html>
<body>

<head>
<title>Compile Test</title>
</head>

<html>
<body>
<h1>jsp_precompile Test</h1>
</body>
</html>

(2)Tomcatを起動する

 Tomcatを起動し、JSP作業ディレクトリの中身を確認します。JSPコンパイル後のソース・クラスファイルは作成されていません。

 なお、JSPの作業ディレクトリはデフォルトの設定で$CATALINA_HOME/work/Catalinaになります。Tomcat起動時には各Webアプリケーションコンテキストのディレクトリとタグライブラリ定義のキャッシュファイルが作成されます。

JSPの作業ディレクトリ(JSPの作業ディレクトリには、JSPのコンパイル後ファイルは作成されていない)

(3)JSPを実行する前にコンパイルする

 まずは、jsp_precompileパラメータ付きURLでブラウザからアクセスします。

http://localhost:8080/jsp-examples/TestComp.jsp?jsp_precompile=truee

 実行結果は以下のとおりです。ブラウザには何も表示されず、空のHTMLが表示されます。

ブラウザでコンパイル結果を確認(jsp_precompileパラメータ付きでアクセスした場合、ブラウザには何も表示されない)

 TomcatのJSP作業ディレクトリにはJSPをコンパイルしたサーブレットソース・クラスが作成され、JSPの実行前にコンパイルが行われていることが確認できます。

JSP作業ディレクトリでコンパイル結果を確認(JSPの作業ディレクトリに、JSPのコンパイル後ファイルが作成されている)

(4)JSPページを呼び出す

 次にパラメータなしのURLでJSPにアクセスします。

http://localhost:8080/jsp-examples/TestComp.jsp

 JSPが実行され、HTMLが表示されました。

JSPの呼び出し実行結果(jsp_precompileパラメータなしでアクセスした場合、JSPページが呼び出される)

 

「Java TIPS」

TechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH