| JSP/サーブレット編 |
|
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 |
注:本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" %>
<head> <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ジャパン
- Scalaのパッケージ、アクセス修飾子、オブジェクト継承 (2012/5/22)
インポート、パッケージオブジェクト、抽象クラス/抽象メソッド、オーバーライド、final、シールドクラスなども - 基幹系システムでCloud SQLは使えるか試してみた (2012/5/17)
サンプルとしてMRPシステムを作成して動かし、「再帰呼び出し」などのパフォーマンスを測定して検証してみます - アジャイル管理ツール9選+Pivotal Tracker入門 (2012/5/14)
群雄割拠のアジャイルプロジェクト管理ツールを9つ紹介し、特に注目を集めているPivotal Trackerの基本的な使い方を解説します - サーバサイドJSやJavaでWebアプリが作れるXPages (2012/5/11)
Notes/Dominoの資産をサーバサイドJavaScriptやJavaで操作し、HTMLやJavaScript、CSSをUIにできる技術を紹介
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -




