java - 从 Java Web 服务器链接外部文件

标签 java tomcat servlets jboss context.xml

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

我的缓存工作正常,但问题是我需要这些呈现的图像在我的 Web 应用程序的部署之间持续存在,也就是说,我不能将它们写入文档库,否则它们会在重新部署时被销毁。

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

但这只适用于 Tomcat,并且在使用 JBoss (5.1) 进行测试时,它似乎不支持符号链接(symbolic link)并且不允许链接到文档库之外的任何内容。我认为必须有一种更实用的方法来完成此工作,适用于所有 Java Web 服务器。我错过了什么?

最佳答案

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

或者您可以添加一个 Apache httpd 服务器前端,该前端将从某个外部目录提供静态图像,并将其他 URL 委托(delegate)给您的 servlet 容器。

关于java - 从 Java Web 服务器链接外部文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7811910/

相关文章:

java - 具有重写的paintComponent方法的子组件在JPanel之上绘制组件

java - RabbitMQ Java客户端异步主题接收

java - Tomcat 没有在 Web 应用程序的上下文中添加斜杠

java - FacesContext 和 "Servlet"上下文

java - JSP trimDirectiveWhitespaces

java - Spring mvc Controller 类未在 [project-name]-target-classes 目录中生成

java - RDD另存为文本文件

jsf - 将自定义 RichFaces my.skin.properties 文件放在哪里?

java - 从 dbcp 获取多个连接

java - JDBC 和 Oracle conn.commit 和 conn.setAutocommit 无法正常工作