2012-03-01 12 views
1

技術的な詳細に慣れることなく、次のような状況で何が起こるかについての一般的な考えがほしいだけです。JSPの再コンパイルが必要ですか?

JSPの主な利点は、プレゼンテーション(静的HTML)と動的アプリケーションロジックが別々にあることです。だから私たちはどちらにも影響を与えずにどちらかに変更を加えることができます。ここでは、プリコンパイルされたJSPをサーブレットまたはバイトコードのどちらかに入れて、プレゼンテーション部分を変更したいとします。アプリケーションロジックを変更していなくても、全体を再コンパイルする必要がありますか?

答えをいただきありがとうございますが、私が得られる答えはすべて、自動的にまたは手動でJSPをサーブレットに再コンパイルする必要があり、対応するバイトコードに変換する必要があるということです。要するに、まったく新しいファイルが作成されるだろう。

答えて

2

JSPである限り、コンパイル/変換する必要はありません。アプリケーションサーバーは、JSPを自動的に対応するサーブレット、つまりJavaファイル(最初にJSPにヒットしたもの)に変換し、クラスファイルにコンパイルします。 JSPファイルを更新するたびに、サーバーがそのリソース(JSP)の要求を受け取ると、最後に更新された時間がチェックされ、必要に応じて上記のジョブが実行されます。

0

いいえ、JSPを変更すると、一般的にサーブレット/ JSPコンテナでは、JSPが変更されたことがわかり、再コンパイルされます。

あなたの展開モデルではわかりません。あなたがaspsを「プリコンパイル」していて、それをあなたの.warに追加しているのなら、あなたは運が悪いかもしれません。

1

Tomcatを使用している場合は、「賢いコンテナ」に分類されます。 .JSPの変更を監視し、サーブレットクラスにコンパイルし、必要に応じてリロードします。

http://tomcat.apache.org/tomcat-3.3-doc/appdev/deployment.html

リロード。 TomcatがWEB-INF/classesディレクトリのJavaクラスファイルまたはWEB-INF/libディレクトリの のJARファイルへの変更を監視するようにするには、 "true"に設定します。このような変更が記録されている場合、Tomcatは を終了してアプリケーションを自動的にリロードし、 の変更を取得します。デフォルト値( "false")は、このような変更が無視されたことを意味します( )。注:この機能は開発中に非常に便利ですが、 チェックを行うにはオーバーヘッドが必要です。この機能は、一般に展開された本番アプリケーションでは使用しないでください。

Tomcat also periodically checks timestamps of JSPこれらが更新されているかどうかを判断する。

1

はい、いいえ。 JSPは最終的にはサーブレットにコンパイルされますが、サーブレットコンテナは通常、JSPが変更された場合にそれを再コンパイルします。これはかなり簡単な操作です。

関連する問題