【问题标题】:Serving files from within a Tomcat context从 Tomcat 上下文中提供文件
【发布时间】:2012-04-18 04:32:58
【问题描述】:

我有一个 Web 应用程序作为 WAR 文件部署到 Tomcat 6。在应用程序中,我想从该上下文中提供目录中的文件。例如,我将myapp.war 部署到/mydir/webapps 并通过以下方式访问我的应用程序:

http://myhost:myport/myapp/

我想通过以下方式提供文件:

http://myhost:myport/myapp/files/somefile.txt

我该怎么做?到目前为止,我只能提供应用程序上下文外部的文件:

http://myhost:myport/files/somefile.txt

文件位于/mydir/webapps/files 而不是/mydir/webapps/myapp/files 目录中。

【问题讨论】:

    标签: tomcat web-applications contextpath


    【解决方案1】:

    你有没有设置 <display-name>myapp</display-name> 在您的 /mydir/webapps/myapp/META-INF/web.xml 中?

    【讨论】:

    • web.xml 文件在 WAR 中而不是在文件系统中,我在其中找到 <display-name>Web_myapp</display-name>/mydir/myapp 目录在我创建之前并不存在。这是在部署 myapp.war 之后。
    • 您可能需要部署您的 web 应用程序,以便 WAR “爆炸”(扩展)到文件系统中(我只使用这种类型的部署),因为您需要文件系统来提供文件。看看tomcat.apache.org/tomcat-6.0-doc/deployer-howto.html 是怎么做的。您必须将“deployOnStartup”属性设置为“true”。
    • 这是一个问题,而不是一个答案。此外,显示名称标签与问题的相关性为零。它只影响应用程序在任何可能使用的管理工具中的显示方式。它对上下文路径没有影响。
    【解决方案2】:

    使用指向外部目录的子上下文。

    根据示例中的路径,您要添加以下文件: $CATALINA_BASE///myapp#files.xml (通常是 $CATALINA_BASE/Catalina/localhost/myapp#files.xml

    以下内容

    <Context docBase="/mydir/webapps/files" />
    

    请注意,为了安全运行,/mydir/webapps/files 必须位于启用了 autoDeploy 的任何 Host 的 appBase 之外。

    【讨论】:

      猜你喜欢
      • 2013-10-12
      • 1970-01-01
      • 2018-12-19
      • 2015-06-23
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      相关资源
      最近更新 更多