【问题标题】:Cannot download file from mount point in Tomcat application无法从 Tomcat 应用程序的挂载点下载文件
【发布时间】:2023-06-17 22:33:01
【问题描述】:

我有一个 tomcat Servlet 应用程序,它托管在不同机器上的多个 tomcat 上。 该应用程序具有私有文件和公共文件。私有文件保存在每个 webapp 文件夹中,但在运行时生成的公共文件保存在公共 mpunt 点中,这是一个使用 nfs 的远程共享文件夹。该文件夹安装在每台机器上,然后在每个 tomcat webapp 文件夹中创建一个 simlink。

这样任何一个tomcat写入的文件都可以被其他所有的访问。

假设我有 4 个 tomcat,每台机器两个。 然后我在每台机器上的路径/foo/bar/files 上安装了我的共享文件夹。这是使用 nfs 从远程共享文件夹挂载。 现在,在每个应用程序根目录中都会创建一个指向该文件夹的 simlink。

<Tomcat Home>/webapp/<app context>/files -> /foo/bar/files

当用户上传某些文件时,我们会将其放在此文件夹中。这使得该文件可用于所有其他 tomcat。

不,我的问题是当我将文件写入此文件夹时,它会成功发生。但是当用户尝试下载文件时,它会给出Error code 404
我试过直接网址。 <host>:<port>/<context>/files/foo.csv。然后我也得到404。 我什至尝试通过 Servlet 流式传输文件,但下载时卡住了,服务器端没有 IO 错误。

我正在使用 Redhat。

请帮忙。提前致谢。

【问题讨论】:

  • 您是否为该 Web 应用程序配置了 allowLinking="true"?具体如何配置取决于您的 Tomcat 版本(您还没有告诉我们)。
  • 是的。做到了,它的工作。我忘了在这里提到它..

标签: java tomcat web-applications download


【解决方案1】:

在 server.xml 的标签中添加 allowLinking="true" 解决了这个问题。

【讨论】:

    最近更新 更多