2017-06-30 87 views
1

我有以下問題,我在C:\Tomcat85\webapps\MyWebApp\Excel\myExcel.xls中編寫了一個Excel文件。Tomcat 8.5花費太長時間才能識別新內容

只要我的Java應用程序完成寫入文件,就會爲用戶執行下載以便使用它。這給了一個討厭的404錯誤。

如果我等幾秒鐘並重新加載頁面,它會下載所有權利(或者在java中添加五秒鐘的睡眠,它的工作原理相同)。

所以,我的結論是,Tomcat需要5秒鐘才能認識到這個新的excel文件存在,然後才能夠提供服務。

有沒有辦法讓Tomcat更快地執行此任務?也許在web.xml中使用一些配置來以不同方式處理「/ Excel /」文件夾。

Windows 10 64位,Tomcat 8.5,Java 7(可以嘗試java8,但我不認爲它會有所作爲)。

某些代碼:

new ExcelExport(remoteHandle, context).execute(outFileName, outMessage); 
// Thread.sleep(5000); 
httpContext.wjLoc = formatLink(outFileName); 
  • 睡眠取決於測試評論或註釋。睡了之後,我得到了404,睡眠在5秒內就可以正常工作。
  • httpContet.wjLoc只是執行下載,作爲文件的鏈接。

的wiriting工作正常,因爲我看到它準備和寫在文件瀏覽器,但如果我試圖通過URL打開它,我會得到相同的404

+2

你可以發佈一些示例代碼?有可能是你的代碼泄漏導致延遲 –

+0

只需添加一些代碼,希望它有幫助!並感謝您的關注。 –

回答

1

Resources默認緩存。高速緩存條目重新生效之間的時間間隔(以毫秒爲單位)由參數this documentation中引用的cacheTtl參數定義。默認情況下,它的值是5秒。

如果要禁用緩存,只需將cachingAllowed設置爲false即可。

+0

謝謝Italo,我嘗試了你的想法,但沒有奏效。我添加了/META-INF/context.xml,並在裏面添加了:「」。然後刪除工作文件夾並重新啓動tomcat。結果是相同的404。也嘗試了cachingAllowed =「false」,但沒有改變。讓我想到的是,我不想禁用緩存o減少它的TTL,我希望它更快可用。任何其他想法?再次感謝費德里科。 –

+1

@FedericoAlvarez'Context'元素沒有'cacheTTL'和'cachingAllowed'參數。 「資源」元素具有。 「資源」元素可以嵌套在「上下文」組件中。如果您沒有「資源」元素,請添加它。像''。 –

+0

謝謝Italo!它工作得很好!用這個:''。現在我應該問:這是否有性能問題?因爲資源不會被緩存(我將TTL設置爲1),對吧?你有什麼經驗?再次感謝費德里科。 –