2011-12-02 47 views
2

我將Apache FOP 1.0構建爲servlet,在Linux CentOS 5.7-64bit上的Tomcat 5.5中運行。作爲servlet的Apache FOP不更新圖像

如果我使用圖像構建文檔,則此文檔呈現OK。然後我更新圖像,並做另一個渲染。呈現的文檔仍舊是舊圖像。我已經驗證過PDF是從頭開始重建的,但由於未知原因它仍然顯示舊圖像。

如果我將FOP作爲獨立程序運行,則不會發生這種情況。 Tomcat的緩存似乎被禁用。

這是如何造成的,我該如何解決?

回答

2

解決方案: 在Fop 1.0 documentation有以下一句:

FOP運行之間的緩存圖像。每個FopFactory實例有一個緩存。 URI被用作識別圖像的關鍵,這意味着當一個特定的URI再次出現時,圖像將從緩存中獲取。如果每次使用相同的URI調用servlet時都會生成不同的圖像,則需要在URI上使用不斷變化的僞參數以避免緩存。

在重新設計的代碼中,圖像緩存已經有相當大的改進。因此,重置圖像緩存應該是過去的事情。如果您仍然遇到OutOfMemoryErrors,請通知我們。

如果一切都失敗時,圖像緩存,可以清除這樣的:fopFactory.getImageManager().getCache().clearCache();

我已經添加了指令到servlet的代碼,這個問題似乎已經消失。