链接Java Web Server中的外部文件

时间:2011-10-18 18:25:38

标签: java tomcat servlets jboss context.xml

我有一个java servlet,根据请求压缩数据并生成图像。可能有数百万个图像,一旦生成它们就不需要重新渲染,所以我想缓存它们并避免渲染步骤,因为它非常繁琐。

我的缓存工作正常,但问题是我需要这些渲染的图像在我的Web应用程序的部署之间保持不变,即我无法将它们写入docbase,否则它们会在重新部署时被销毁。

我一直在做的是使用Context的'allowLinking'属性,因为我的Web应用程序被部署为war文件(context在META-INF / context.xml中)。这有点单调乏味,因为我需要在我的应用程序取消部署之前打破符号链接,否则链接中的图像会被破坏,但它似乎有效。

但这仅适用于Tomcat,当使用JBoss(5.1)进行测试时,它似乎不符合符号链接,也不允许链接到docbase之外的任何内容。我认为必须有一种更实用的方法来实现这一点,适用于所有Java Web服务器。我错过了什么?

1 个答案:

答案 0 :(得分:2)

您可以配置一个servlet来为外部目录中的图像提供服务。这个servlet只需要从请求中提取图像文件名或ID,从外部目录读取文件并将字节写入servlet响应的输出流(在响应中设置适当的内容类型)。

或者你可以添加一个Apache httpd服务器前端,它将从一些外部目录提供静态图像,并委托你的servlet容器获取其他URL。