从远程Java服务器下载文件

从远程Java服务器下载文件,java,download,Java,Download,我正在寻求关于实施这一要求的建议: 要求公众网站上的用户能够下载任何类型的文件。 网站的Web服务器位于DMZ上,存储文件的服务器位于公司网络内部。Web服务器必须与文件存储服务器通信才能获取文件。实现这一点的最佳方式是什么 将该文件服务器映射为web服务器磁盘文件系统中的网络驱动器,然后将另一个web应用程序上下文添加到引用网络映射路径的servletcontainer配置中 目前还不清楚您正在运行/针对哪个servletcontainer和平台,因此我无法给出更详细的答案。但是如果它是Tom

我正在寻求关于实施这一要求的建议:

要求公众网站上的用户能够下载任何类型的文件。
网站的Web服务器位于DMZ上,存储文件的服务器位于公司网络内部。Web服务器必须与文件存储服务器通信才能获取文件。实现这一点的最佳方式是什么

将该文件服务器映射为web服务器磁盘文件系统中的网络驱动器,然后将另一个web应用程序上下文添加到引用网络映射路径的servletcontainer配置中

目前还不清楚您正在运行/针对哪个servletcontainer和平台,因此我无法给出更详细的答案。但是如果它是Tomcat,那么只需将以下元素添加到Tomcat的
/conf/server.xml
,假设您已将文件服务器映射到
/path/to/mount/share



通过这种方式,它可以通过

使用。看起来您需要一个类似代理的组件来服务后端文件。。。就我个人而言,我不会使用应用服务器来完成这样的任务,而只是使用Web服务器。一些选择:

  • 网络共享:按照BalusC的建议创建网络共享,并将web服务器配置为使用该共享
  • 反向代理:在文件服务器上部署另一个web服务器,并将前端配置为充当反向代理(即向内部web服务器发送下载请求)

也就是说,我宁愿使用基于(Apache、Nginx等)web服务器的方法,而不是基于Java/J2EE的方法。对我来说,它似乎更适合。。。因此,我会咨询我的系统管理员:)

实现哪个,下载还是与文件服务器对话?下载就像在response中流式传输文件一样简单。BalusC,我尝试了您的解决方案。我首先使用网络驱动器的UNC路径作为docbase。当我启动Tomcat(startup.bat)时,会出现“文档库不存在或不是可读目录”错误。然后,我尝试使用映射驱动器,即Web服务器上的I:驱动器。这没有给我上面的错误,但是当我访问路径时,我得到一个资源未找到错误。您需要指定一个文件名:)默认情况下,目录列表是关闭的。例如,如果您在
/share
文件夹中有一个
foo.ext
,那么您需要打开目录列表,或者如果您想打开目录列表,请将Tomcat的
/conf/web.xml
JspServlet
属性设置为
true
。您只需记住,这会影响部署到此Tomcat服务器上的所有WebApp!