在servlet容器中提供来自不同于上下文目录的文件夹的文件



我遇到了一种情况,我必须从不同的文件夹提供文件,然后是我的web应用程序正在运行的上下文之一。例如,假设我的web应用程序在"/opt/tomcat/webapps/ROOT/"的servlet上下文中运行,我必须服务于"/opt/my_other_folder/"中存在的文件。这些文件夹可以由客户机在运行时更改,所以我不能简单地添加一个指向这些目录的新上下文。我想一个解决方案,我不必重写一个web服务器只是为了这个。而且,我使用的产品是通用的,所以我不能有特定于某些servlet容器的解决方案。

谢谢!

如果你只提供文件服务,我会考虑在你的servlet容器前面放一些像Apache HTTP Server这样的东西,在那里你可以简单地使用它的各种指令来提供一个"虚拟目录",指向一个容易配置的位置。

否则,您可以编写和配置一个标准的Java servlet,它将做本质上相同的事情—将实际路径存储在servlet将读取的Java属性文件中。但是,虽然这不是一个大量的工作,但它将比上述Apache HTTP服务器解决方案的工作量大得多。这与Servlet上关于提供静态内容的几个答案非常相似。具体来说,您可以使用或扩展Apache Tomcat的DefaultServlet。(这里使用了一些特定于tomcat的类,但它们可以很容易地被泛型等价物取代。)http://balusc.blogspot.com/2009/02/fileservlet-supporting-resume-and.html看起来更接近您所要寻找的,而且它是完全泛型的——同时仍然具有一些额外的、重要的特性。

这两个选项都是非常通用的,而不是特定于任何特定的servlet容器。

最新更新