2010-01-05 18 views
24

我正在編輯直接位於tomcat/webapps/myapp/WEB-INF之內的JSP文件,但要查看更改,我必須重新啓動服務器。據我所知,JSP更改不要求您重新啓動服務器。我發現的唯一的配置這是關係到自動重裝是reloadable = "true"爲什麼我的JSP更改沒有反映出來而沒有重新啓動Tomcat?

設置爲true,如果你在/想卡塔利娜到 monitor類WEB-INF /班/ 和更改/ WEB-INF/lib和如果檢測到更改,則 會自動重新加載網絡 應用程序。

我在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> 
+0

配置沒問題。檢查我的更新(以及您的瀏覽器緩存) – Bozho 2010-01-05 09:27:17

+1

因此,您使用的是從應用程序服務器獲取控制權的IDE? – BalusC 2010-01-05 11:51:22

+0

Tomcat 8和Java 8遇到了同樣的問題。在Tomcat 7和Java 7中工作良好。我也試過了開發參數,但它仍然無法正常工作。也許這是由於需要使用Tomcat 8配置Eclipse Kepler所必需的WTP庫更新引起的。 – Chip 2014-09-04 10:56:49

回答

27

In the tomcat docs,請參閱development設置。它必須設置爲true才能讓jsps重新加載。

development - Jasper是否在開發模式下使用?如果爲true,則可以通過modifyTestInterval參數指定檢查JSP進行修改的頻率.true或false,默認爲true。

這是你的CATALINA_HOME/conf/web.xml

此外,如果您需要刷新一個jsp在生產環境中沒有重啓,你可以去CATALINA_HOME/work/Catalina/localhost/contentName/org/apache/jsp並刪除your_jsp.javayour_jsp.class文件。他們將在下次訪問時重新創建。

編輯:在提供您的配置以及關於不刷新內容的評論之後,我還有另一個:清除您的瀏覽器緩存,或從另一個瀏覽器打開頁面。

+0

編輯問題以從web.xml添加摘錄 – 2010-01-05 09:09:09

+3

有趣的是,我已經從'CATALINA_HOME/work/Catalina/localhost中刪除了所有文件/ contentName/org/apache/jsp'並在訪問該頁面時,爲jsp創建新的.java和.class文件。但是這些變化還沒有得到體現。 :( – 2010-01-05 09:11:25

+0

我們不時有同樣的問題,@ RakeshJuyal你有沒有找到解決辦法? – Marcus 2012-12-06 13:26:16

0

您將需要轉到Eclipse中的服務器項目並編輯web.xml文件並將'development'設置爲true。

+0

你能告訴確切的一行嗎?我不能在服務器項目的'web.xml'文件中找到'development'選項的位置 – 2016-09-13 08:39:04

2

一個遲到的答案,其他人可能會覺得這有用。

檢查Tomcat文件夾的權限,我嘗試了很多其他解決方案,但沒有成功。

最後,我給了Tomcat文件夾的'用戶帳戶''完全控制'權限,並且每當我在JSP中進行更改時,Tomcat都會收到更改。我假設你正在使用Windows。 這背後的基本原理是:無論何時在JSP中進行更改,都必須將其編譯並部署(寫入)到webapps文件夾。如果在該文件夾上沒有「寫入」權限,它將自動失敗。這發生在我的情況。因此,如果context.xml中的reloadable = truedevelopment = true不起作用,請嘗試此權限修復。

我在Windows 7上使用Tomcat 7。

+0

我認爲這對我有效......我在工作目錄下添加的類和java文件沒有被拾取,所以我嘗試了這個並運行垃圾收集,最後我的jsp更新被反映在服務器上 – Edd 2016-02-12 16:24:00

1

同步服務器&客戶端時間

您可以檢查服務器時間和客戶端系統的時間。在改變服務器正確工作時間之後的幾天前對我來說。它反映了.jsp文件的變化。

3

簡單弄清楚儘管它可能是,這裏就是「制定發展到真正的」機構(多爲快速參考):

<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> 

然後重啓。

8

一個更晚的答案...

設置「antiResourceLocking」的背景下文件爲「true」可以防止JSP由Tomcat的(Bugzilla 37668)被重新加載。

這是記錄在Tomcat doc,在「antiResourceLocking」參數說明

+0

有這個問題和antiResourceLocking也是問題! – 2017-02-02 13:46:44

+0

這節省了我的一天! – pablo 2017-02-03 12:38:16

3

我有同樣的問題和固定的問題。 確保在conf/context.xml你沒有以下配置

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

如果你有一個,刪除這兩個antiJARLocking="true" antiResourceLocking="true",只寫

<Context> 
+0

這似乎也適用於靜態文件,如html,js等可能希望獨立於重新啓動應用程序進行更新。 – 2016-02-17 21:40:19

0

打開context.xml文件在META-INF文件夾,並設置antiJARLocking爲false。

你的目錄樹應該如下:

網絡> META-INF> context.xml的

0

我使用TomEE 1.7.2在Windows 7上使用Eclipse。爲我工作溶液簡單地改變在本地主機,配置的TomEE服務器的web.xml文件(在我的IDE),使開發初始參數是正確的:

<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

(Tomcat的7.0.62)我不得不去CATALINA_HOME/temp/xx -mysite /,找到我的jsp文件目錄樹並編輯它。

xx是一個隨機(?)前綴數字,在我的情況11,但每個網站都有一個。

0

我也在執行myeclipse中的jsp更改時遇到了這個問題,這些問題在運行時並未在應用程序中反映出來。 我希望這些檢查能幫助你。

  1. 雙擊MyEclipse中的Tomcat服務器。
  2. 單擊「概覽」窗口中的「發佈」菜單。
  3. 選擇單選按鈕「資源更改時自動發佈」
  4. 輸入發佈間隔時間爲1秒。

enter image description here enter image description here

我希望這會幫助你。

-2

實際上,jsp引擎會檢查jsp頁面是否比它的servlet頁面更早,並基於此決定是否需要更改。

相關問題