web-dev-qa-db-ja.com

Tomcatを再起動しないと、JSPの変更が反映されないのはなぜですか?

Tomcat/webapps/myapp/WEB-INF内に直接存在するJSPファイルを編集していますが、変更を確認するには、サーバーを再起動する必要があります。私の知る限り、JSPの変更ではサーバーを再起動する必要はありません。自動リロードに関連する唯一の構成は、 reloadable = "true" です

Catalinaで/ WEB-INF/classes /および/ WEB-INF/lib内のクラスの変更を監視し、変更が検出された場合にWebアプリケーションを自動的にリロードする場合は、trueに設定します。

context.xmlでこの属性を使用しましたが、それでも問題は解決しません。再起動せずにJSPファイルの変更を検出しない他の考えられる理由は何ですか?

@ Bozho:これはweb.xmlからの抜粋です。何か変更する必要がありますか?

 <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.Apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>
28
Rakesh Juyal

Tomcat docs で、development設定を参照してください。 jspをリロードするには、trueに設定する必要があります。

開発-Jasperは開発モードで使用されていますか? trueの場合、修正のためにJSPがチェックされる頻度は、modificationTestInterval parameter.trueまたはfalse(デフォルトはtrue)で指定できます。

これはCATALINA_HOME/conf/web.xml

さらに、再起動せずに本番環境でjspを更新する必要がある場合は、CATALINA_HOME/work/Catalina/localhost/contentName/org/Apache/jspおよびyour_jsp.Javaおよびyour_jsp.classファイル。次回アクセスしたときに再作成されます。

編集:設定を提供し、コンテンツを更新しないことについてコメントした後、ブラウザキャッシュをクリアするか、別のブラウザからページを開きます。

28
Bozho

さらに遅い答え...

コンテキストファイルで「antiResourceLocking」を「true」に設定すると、JSPがTomcatによって再ロードされなくなる可能性があります( Bugzilla 37668 )。

これは、 Tomcat doc の「antiResourceLocking」パラメーターの説明に記載されています。

10
kkk

同じ問題があり、問題を修正しました。 conf/context.xml次の設定がありません

<Context antiJARLocking="true" antiResourceLocking="true">

ある場合は、両方を削除しますantiJARLocking="true" antiResourceLocking="true"、 書くだけ

<Context>
5

わかりやすいかもしれませんが、「開発をtrueに設定する」ことの意味は次のとおりです(クイックリファレンスの詳細)。

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.Apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <!-- Add the following init-param -->
    <init-param>
        <param-name>development</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>

そして再起動します。

4
Beez

遅い答えですが、他の誰かがこれを便利だと思うかもしれません。

Tomcatフォルダーのアクセス許可を確認してください。他の多くのソリューションを試しましたが、うまくいきませんでした。

最後に、Tomcatフォルダーに「ユーザーアカウント」「フルコントロール」権限を付与し、JSPに変更を加えるたびにTomcatが変更を取得しました。 Windowsを使用していると仮定しています。この理由は、JSPに変更を加えるときはいつでも、コンパイルしてwebappsフォルダーにデプロイ(書き込み)する必要があるということです。そのフォルダに「書き込み」権限がない場合、サイレントに失敗します。これは私の場合に起こっていました。したがって、reloadable = trueおよびdevelopment = true context.xmlで機能しません。この権限の修正を試してください。

Windows 7でTomcat 7を使用しています。

2
cherit

サーバーとクライアントの時間を同期する

サーバー時間とクライアントシステム時間を確認できます。数日前にサーバー時間を変更した後、私にとっては正しく機能しました。 。jspファイルの変更を反映しています。

1
lighthouse

Eclipseを使用するWindows 7でTomEE 1.7.2を使用しています。私のために働いた解決策は、localhost-config(私のIDE内)でTomEEサーバーのweb.xmlファイルを変更して、開発の初期化パラメーターがtrueになるようにすることでした。

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.Apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>development</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>
0
Warren Smith

(Tomcat 7.0.62)CATALINA_HOME/temp /xx-mysite /に移動して、thatでjspファイルを見つける必要がありました=ディレクトリツリーを編集します。

xxはrandom(?)プレフィックス番号で、私の場合は11ですが、すべてのサイトに1つずつあります。

0
denispyr

context.xmlファイルをMETA-INFフォルダーに保存し、antiJARLockingをfalseに設定します。

ディレクトリツリーは次のようになります。

Web> META-INF> context.xml

0
Bic Mitchun

Eclipseのサーバープロジェクトに移動し、web.xmlファイルを編集して、「development」をtrueに設定する必要があります。

0
user2283714

Myeclipseでjspを変更しているときにもこの問題に直面しましたが、実行中にアプリケーションに反映されません。これらのチェックがお役に立てば幸いです。

  1. MyEclipseからTomcatサーバーをダブルクリックします。
  2. [概要]ウィンドウの[公開]メニューをクリックします。
  3. [リソースが変更されたときに自動的に公開する]ラジオボタンを選択します
  4. 発行間隔時間を1秒として入力します。

enter image description hereenter image description here

これがあなたのお役に立てば幸いです。

0
Mdhar9e