Java ApacheFop作为servlet不';更新图像

Java ApacheFop作为servlet不';更新图像,java,tomcat,servlets,apache-fop,Java,Tomcat,Servlets,Apache Fop,我将ApacheFop1.0构建为一个servlet,在Linux CentOS 5.7-64位的Tomcat5.5中运行 如果使用图像构建文档,则此文档呈现为OK。然后我更新图像,并进行另一次渲染。渲染的文档仍保留旧图像。我已经验证了PDF是从头开始重建的,但不知为什么它仍然显示旧图像 如果我将FOP作为独立程序运行,则不会发生这种情况。Tomcat的缓存似乎已被禁用 这是如何造成的?我如何解决它?解决方案: 下面是一句话: FOP在运行之间缓存图像。每个FopFactory实例有一个缓存。U

我将ApacheFop1.0构建为一个servlet,在Linux CentOS 5.7-64位的Tomcat5.5中运行

如果使用图像构建文档,则此文档呈现为OK。然后我更新图像,并进行另一次渲染。渲染的文档仍保留旧图像。我已经验证了PDF是从头开始重建的,但不知为什么它仍然显示旧图像

如果我将FOP作为独立程序运行,则不会发生这种情况。Tomcat的缓存似乎已被禁用

这是如何造成的?我如何解决它?

解决方案: 下面是一句话:

FOP在运行之间缓存图像。每个FopFactory实例有一个缓存。URI用作标识图像的键,这意味着当特定URI再次出现时,图像将从缓存中获取。如果您有一个servlet,每次使用相同的URI调用它时都会生成不同的映像,那么您需要在URI上使用一个不断变化的伪参数来避免缓存

在重新设计的代码中,图像缓存得到了极大的改进。因此,重置图像缓存应该成为过去。如果您仍然遇到OutOfMemory错误,请通知我们

如果所有其他操作都失败,则可以如下方式清除映像缓存:
fopFactory.getImageManager().getCache().clearCache()

我已经将指令添加到servlet的代码中,问题似乎消失了