JSP コンパイラ

JSP を Java サーブレットに変換する処理の一部として、最初に JSP を Java ソース ファイルに変換します。次に、Java ソース ファイルを Java .class ファイルにコンパイルします。このセクションでは、JRun で使用する JSP コンパイラの構成方法について説明します。

JRun コマンド ライン コンパイラおよび JSPC コンパイラの詳細については、"JSPC コンパイラ"を参照してください。

JSP コンパイラのプロパティの設定

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 コンパイラを含むコマンド ラインを指定します。


メモ

Java compiler プロパティが空白の場合、JRun では Sun javac コンパイラを使用して、 JSP をインプロセスでコンパイルします。


たとえば、次のようにコマンド ラインを指定します。

javac -nowarn -classpath %c -d %d %f

Java compilerのプロパティには、%c%d、および %f の 3 つのパラメータ プレースホルダを入れる必要があります。それらは JRun によって次の値に置き換えられます。

次の例は、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 のコンパイルのバイパス

ページがクライアントによって初めて要求される場合、または要求された JSP が最後の要求の後に修正されている場合は、JRun によって JSP がコンパイルされ、そのページの .class ファイルが作成されます。ただし、公開するアプリケーションでは、ユーザがコンパイルをバイパスして、常にそのページの .class ファイルを JRun にロードさせる場合があります。

次のような理由により、JSP のコンパイルをバイパスします。

JSP のコンパイル プロセス

次の図は、JRun に JSP の要求が渡されたときに実行される手順を示します。

次の手順は、JSP が要求されたときに JRun が実行する動作を示しています。

  1. JSP (.jsp ファイル) が解析されて、Java ソース コード (.java ファイル) が作成されます。
  2. Java ソース コードが Java クラス (.class ファイル) にコンパイルされます。
  3. クラスが Web サーバーのメモリにロードされます。
  4. サーブレットが実行されます。

JRun では、JSP のコンパイル時にページの修正時刻が記録されます。次にそのページが要求されたときに、依存チェックが実行され、ページの修正時刻が変更されているかどうかが確認されます。ページが最後のコンパイルから変更されていない場合は、JSP を再コンパイルする必要がないため、修正時刻に変更がない場合は、手順 1 と 2 のコンパイルがバイパスされます。JSP の修正時刻とページが最後にコンパイルされた時刻が異なる場合、JRun によって手順 1 〜4 が実行され、ページが再コンパイルされます。

JSP の開発、デバッグ、およびテストを行うときに、JSP の編集および修正を頻繁に行うため、アプリケーションの開発中は、修正した JSP を再コンパイルする必要があります。ただし、アプリケーションを公開する時点では、JSP は通常静的であるため、修正されることはありません。

JSP のコンパイルの自動的なバイパス

既定では、JRun では JSP の要求を受信すると、そのページの .jsp ファイルの存在を確認します。.jsp ファイルが存在しない場合は、自動的にそのページの .class ファイルが確認されます。.class ファイルが見つかった場合は、そのファイルがロードされて実行されます。

したがって、静的な JSP の場合、すなわち修正する必要のないページの場合は、JSP をコンパイルしてそのページの .class ファイルを作成し、次に.jsp ファイルを削除できます。これにより、JRun によって自動的にそのページの .class ファイルがロードされます。


メモ

.jsp ファイルの削除は、先に JSP をコンパイルして .class ファイルを作成してから 行ってください。次のセクションでは、ページが確実にコンパイルされるようにする 2 つの方法について説明します。


JSP コンパイルの無効化

JSP コンパイルを明示的に無効にするには、webapp.properties ファイルを更新して、JSP を処理する JRun サーブレットを修正します。この設定は、個々の Web アプリケーションのコンパイルの有効化または無効化を可能にするため、Web アプリケーション レベルで作成します。

次の手順に従って、JSP コンパイルを無効にします。

  1. テキスト エディタを使用して、Web アプリケーションの
    WEB-INF/webapp.properties ファイルを開きます。
  2. 次の行を追加します。
    webapp.servlet-mapping.*.jsp=jsprt
    
  3. ファイルを保存します。
  4. ホット デプロイが有効になっていない場合は、JRun サーバーを再起動します。

これにより、JSP に対する要求を処理するたびに、jsprt サーブレットが使用されます。このサーブレットでは、JSP の存在は確認されず、対応する .class ファイルのみが検索されます。したがって、公開する Web アプリケーションでは、JSP を実際に公開する必要はありません。JSP はソース コード ファイルであるため、公開するアプリケーションからソース コードを省くことができます。

JSP のコンパイルを無効にすることは通常、アプリケーションの公開時にのみ作成する最適化の方法です。コンパイルを無効にする場合は、すべての JSP に対応する .class ファイルを提供する必要があります。したがって、アプリケーションを公開する前に、すべての JSP をプレコンパイルして .class ファイルを作成する必要があります。プレコンパイルは、次のいずれかの方法で実行します。

JSP のコンパイルの再有効化

JSP のコンパイルを再び有効にするには、次の手順を実行します。

  1. テキスト エディタを使用して、Web アプリケーションの
    WEB-INF/webapp.properties ファイルを開きます。
  2. 次の行を削除します。
    webapp.servlet-mapping.*.jsp=jsprt
    
  3. ファイルを保存します。
  4. ホット デプロイが有効でなければ、JRun サーバーを再起動します。