JSP を Java サーブレットに変換する処理の一部として、最初に JSP を Java ソース ファイルに変換します。次に、Java ソース ファイルを Java .class
ファイルにコンパイルします。このセクションでは、JRun で使用する JSP コンパイラの構成方法について説明します。
JRun コマンド ライン コンパイラおよび JSPC コンパイラの詳細については、"JSPC コンパイラ"を参照してください。
JRun には tools.jar
ファイルが付属しており、そのファイルには javac
コンパイラが含まれています。既定では、JRun によって javac
コンパイラが使用され、JSP を Java .class
ファイルにコンパイルします。ただし、JRun 管理コンソール (JMC) を使用して、別のコンパイラを指定したり、既定のコンパイラのプロパティを変更することもできます。
JRun では、コンパイラを Web アプリケーション レベルで構成します。つまり、各 Web アプリケーションごとに異なるコンパイラを指定できます。
JSP コンパイラを構成するには、JMC で、[
サーバー名
] > [Web アプリケーション] > [
アプリケーション名
] > [JavaServer Pages] > [Java コンパイラ]
プロパティを使用します。ここで、サーバー名
には、Web アプリケーションのホストとなる JRun JVM の名前、アプリケーション名
には、アプリケーションの名前を指定します。Java compiler
プロパティは、JSP を Java .class
ファイルにコンパイルするときに使用される、Java コンパイラを含むコマンド ラインを指定します。
メモ
|
javac -nowarn -classpath %c -d %d %f
Java compiler
のプロパティには、%c
、%d
、および %f
の 3 つのパラメータ プレースホルダを入れる必要があります。それらは JRun によって次の値に置き換えられます。
%c
は、コンパイラのクラスパス設定を指定し、次のパスの組み合わせで構成されます。
classpath
変数の値。このパスは JMC を使用して設定できます。
WEB-INF
¥classes
ディレクトリのパスWEB-INF
¥lib
ディレクトリにある JAR ファイルへのパス 次の例に示すように、ディレクトリをコマンド ラインに含めることによって、独自 のディレクトリをクラスパスに追加できます。
javac -nowarn -classpath ¥myclasses, %c -d %d %f
%d
は、コンパイル済みファイルが生成されるディレクトリに置き換えられます。%f
は、JSP に対応する Java ファイル名に置き換えられます。次の例は、Microsoft のコンパイラを指定する方法を示しています。
jvc /cp:c %c /dest:%d %f
Microsoft のコンパイラを指定すると、基になる Windows 環境を効果的に使用するコードを実装できます。JRun サーブレット エンジンが実行される仮想マシンの種類に依存することなく、Component Object Model (COM) オブジェクトを含むページ コンパイル ドキュメントをコンパイルできます。ただし、COM オブジェクトを利用するコンパイル済みページを正しく実行するには、Microsoft Java Virtual Machine (JVM) 上で JRun を実行する必要があります。
JSP のコンパイルの段階は、Web アプリケーションの実行時環境に依存しないため、コンパイラと異なるベンダの JVM を使用できます。したがって、Windows プラットフォームで開発するときに、javac
ではなく jview
を使用して、ドキュメントをコンパイルする場合は、コンパイル済みページが COM オブジェクトを参照する限り、ドキュメントを Windows JVM で実行できます。
ページがクライアントによって初めて要求される場合、または要求された JSP が最後の要求の後に修正されている場合は、JRun によって JSP がコンパイルされ、そのページの .class
ファイルが作成されます。ただし、公開するアプリケーションでは、ユーザがコンパイルをバイパスして、常にそのページの .class
ファイルを JRun にロードさせる場合があります。
次のような理由により、JSP のコンパイルをバイパスします。
.class
ファイルのみを提供します。 次の図は、JRun に JSP の要求が渡されたときに実行される手順を示します。
次の手順は、JSP が要求されたときに JRun が実行する動作を示しています。
jsp
ファイル) が解析されて、Java ソース コード (.java
ファイル) が作成されます。
class
ファイル) にコンパイルされます。JRun では、JSP のコンパイル時にページの修正時刻が記録されます。次にそのページが要求されたときに、依存チェックが実行され、ページの修正時刻が変更されているかどうかが確認されます。ページが最後のコンパイルから変更されていない場合は、JSP を再コンパイルする必要がないため、修正時刻に変更がない場合は、手順 1 と 2 のコンパイルがバイパスされます。JSP の修正時刻とページが最後にコンパイルされた時刻が異なる場合、JRun によって手順 1 〜4 が実行され、ページが再コンパイルされます。
JSP の開発、デバッグ、およびテストを行うときに、JSP の編集および修正を頻繁に行うため、アプリケーションの開発中は、修正した JSP を再コンパイルする必要があります。ただし、アプリケーションを公開する時点では、JSP は通常静的であるため、修正されることはありません。
既定では、JRun では JSP の要求を受信すると、そのページの .jsp
ファイルの存在を確認します。.jsp
ファイルが存在しない場合は、自動的にそのページの .class
ファイルが確認されます。.class
ファイルが見つかった場合は、そのファイルがロードされて実行されます。
したがって、静的な JSP の場合、すなわち修正する必要のないページの場合は、JSP をコンパイルしてそのページの .class
ファイルを作成し、次に.jsp
ファイルを削除できます。これにより、JRun によって自動的にそのページの .class
ファイルがロードされます。
メモ
|
JSP コンパイルを明示的に無効にするには、webapp.properties
ファイルを更新して、JSP を処理する JRun サーブレットを修正します。この設定は、個々の Web アプリケーションのコンパイルの有効化または無効化を可能にするため、Web アプリケーション レベルで作成します。
WEB-INF/webapp.properties
ファイルを開きます。
webapp.servlet-mapping.*.jsp=jsprt
これにより、JSP に対する要求を処理するたびに、jsprt
サーブレットが使用されます。このサーブレットでは、JSP の存在は確認されず、対応する .class
ファイルのみが検索されます。したがって、公開する Web アプリケーションでは、JSP を実際に公開する必要はありません。JSP はソース コード ファイルであるため、公開するアプリケーションからソース コードを省くことができます。
JSP のコンパイルを無効にすることは通常、アプリケーションの公開時にのみ作成する最適化の方法です。コンパイルを無効にする場合は、すべての JSP に対応する .class
ファイルを提供する必要があります。したがって、アプリケーションを公開する前に、すべての JSP をプレコンパイルして .class
ファイルを作成する必要があります。プレコンパイルは、次のいずれかの方法で実行します。
.class
ファイルが作成されます。
この方法の欠点は、各 JSP の要求を手作業で作成しなければならないことです。 JSP が 1 つでも省かれると、クライアントがページを要求してそのページがコンパ イルされていない場合にエラーが発生します。
JSPC コンパイラを使用すると、アプリケーションに関連するすべての JSP を 1 つの コマンドでコンパイルできます。この方法では、すべての JSP が確実にコンパイル されます。JSPC コンパイラの詳細については、"JSPC コンパイラ"を参照してく ださい。
JSP のコンパイルを再び有効にするには、次の手順を実行します。
WEB-INF/webapp.properties
ファイルを開きます。
webapp.servlet-mapping.*.jsp=jsprt