2013-01-31 23 views
1

我目前正在Liferay服務器上開發。通過Struts進行文件下載操作暫停一段時間

[liferay-portal-6.1.10-ee-ga1 + tomcat-7.0.25] 

在某些情況下,我的用戶從文檔庫下載文件。

會發生什麼事是,當他們與下列類型的網址這樣做

[$LIFERAY_HOST]/c/document_library/get_file?uuid=[$OBNOXIOUSLY_LONG_UUID]&groupId=[$MY_GROUP_ID] 

文件下載需要年齡結束。

實際上,下載本身並不需要比所需時間更多的時間。但似乎答覆並未結束。

大多數下載客戶端(包括Firefox,wget,wireshark等)似乎沒有被注意到響應的結束。

結果是他們掛在沒有實際的好理由

最糟糕的情況是,我的Firefox用戶有一個印象,他們的下載花費了很長時間,對於真正很小的文件(比如8kb的20秒......泰語說的是對的,這是不可接受的)。

我試圖挖掘我的堆棧,並環顧liferay的來源,但我無法確定延遲來自何處。

我試圖在這個線程(這看起來真的有希望的)的方式來看待https://www.liferay.com/community/forums/-/message_boards/message/11838689

但這並不適用於我的問題。我強制所有的過濾器類都吐日誌消息,並且它們似乎都在幾毫秒內執行(最多隻有一秒鐘)。

我試着檢查httpservletrequest的輸出流的沖洗和關閉,它們都執行正確和乾淨...我開始對自己失去希望和信心...我很傷心,我覺得很髒,我需要咖啡... 請幫幫我 !

----編輯:答案----

(其實我的問題是有關gzip的過濾器 ,我沒有在我的第一次嘗試找出一個方法在我的確切版本RP的答案。是不是實際的解決方案,但它是一個很大的緊密版本 如果你遇到了同樣的問題,broxse無論是RP的答案(樓下)或本:

www.liferay.com/community/forums/-/message_boards/message/21186157#_19_message_21215343

+0

出頭,可以幫助:什麼文檔存儲您使用的是和你有任何的定製開發? –

+0

這確實是一個非常好的問題。我的documentLibrary文件存儲在我的服務器的文件系統中(請參閱我的門戶中的dl.store.impl行= com.liferay.portlet.documentlibrary.store.FileSystemStore行。屬性我們沒有覆蓋它在portal-ext.properties中)。 我們的liferay門戶當然有自己的開發項目,但目前的文件服務工作流程中沒有任何開發項目。 – Ar3s

回答

1

不幸的是,這是一個問題用Liferay搜索Liferay bug追蹤器我發現了LPS-29323的描述與你的描述相匹配。

幸運的是修復看起來很簡單。

您可以查看pull request that fixes the issue或加入這一行WEB-INF\liferay-web.xml

<filter-mapping> 
    <filter-name>ETag Filter</filter-name> 
    <url-pattern>^(/c/document_library/get_file|/c/message_boards/get_message_attachment|/c/wiki/get_page_attachment)(\?.*)?$</url-pattern> 
    <dispatcher>FORWARD</dispatcher> 
    <dispatcher>REQUEST</dispatcher> 
</filter-mapping> 
+0

不幸的是,我剛剛離開了工作:'(我會在早上嘗試這個明天;但無論如何,這似乎很奇怪,因爲我已經調查過濾器導致... 也許我沒有調查的權利。 我儘快告訴你! – Ar3s

+0

您的回答讓我更深入地瞭解了這種過濾器的情況。 原來我的真正問題是gzip過濾器在我的第一次檢查時似乎可以正常工作。 – Ar3s

+0

很高興爲您效力!我應該加上你自己的發現作爲答案。 –