【问题标题】:Can a Tomcat docBase span multiple folders?Tomcat docBase 可以跨越多个文件夹吗?
【发布时间】:2013-07-19 04:20:11
【问题描述】:

如果这是一个糟糕的问题,我深表歉意,但我正在使用 Windows,并希望看看是否有办法通过 docBase 是多个文件夹的 Tomcat 运行 web 应用程序。

更多背景知识是,我们的 Eclipse 项目设置为将 Web 内容分成单独的文件夹。一个文件夹代表我们的 SDK 提供的内容,一个是包含 SDK 补丁的文件夹,第三个是特定于项目的组件 - 最后两个文件夹中的任何一个都可能包含从前两个文件夹中“删除”项目的子文件夹/文件。

我想尝试将我的上下文文件指向我的开发环境,这样我就不需要构建/部署来查看我所做的更改。这可能吗?

其他几点说明:

  • 我们曾考虑通过 mklink 使用符号链接,但如果存在简单性,我们不想造成复杂性。
  • 这只是为了在本地运行,所以允许简单的 hack。当我们创建部署到真实环境的 WAR 时,ANT 脚本会创建一个 Web 根目录。

【问题讨论】:

    标签: tomcat tomcat6


    【解决方案1】:

    我是这样用的:

        <Context docBase="jquery"                path="/js/jquery" />
        <Context docBase="foobar/www/javascript" path="/js" />
        <Context docBase="foobar/www/css"        path="/css" />
        <Context docBase="foobar"                path="/" />
    

    对于具体上下文来说重要的是路径属性。从上到下处理一个请求。

    因此对/css/default.css 的请求仅从第三个上下文处理。

    不同的顺序可能会捕获不同的上下文。

    这是错误

        <Context docBase="foobar"                path="/" />
        <Context docBase="jquery"                path="/js/jquery" />
        <Context docBase="foobar/www/javascript" path="/js" />
        <Context docBase="foobar/www/css"        path="/css" />
    

    因为/css/default.css 将被第一个上下文捕获,而不是第四个。

    编辑 2013-08-10: (不是由答案作者)重要的是要注意,虽然上述技术可行,但实际上大部分是不正确。详情请看cmets。

    【讨论】:

    • 顺便说一句,这个配置可能是项目的一部分,所以你可以把它放到/META-INF/context.xml
    • 不是肉丸,而是对于我创建的每个 是否意味着我需要在每个中列出我的 JNDI 资源?
    • 不,jndi 条目适用于 Web 应用程序。不是每个 context 都必须是一个网络应用程序。一个有效的 context 可以是一个空文件夹。对于上面的例子:foobar/www/css-folder 只有一个文件:standard.css
    • 如果您有任何问题,我们可以加入chat.stackoverflow.com/rooms/139/java
    • Servlet 规范说,在将 URL 映射到 Web 应用程序时,最长匹配获胜,因此对 /css/whatever.css 的请求应该由上下文路径为 /css 的 webapp 处理,而不是 ROOT 上下文(在这个答案中配置不正确:路径应该是“”而不是“/”)。
    【解决方案2】:

    Tomcat 可以为您做到这一点,您只需要一些额外的配置。

    您正在寻找VirtualDirContext,它允许您指定extraResourcePaths 的列表,将(按顺序)搜索其他文件。您可以使用它来合并静态资源、JSP、JAR 文件目录等。

    请记住,您添加的每个路径都会使每次文件查找都可能需要更长的时间——尤其是在根本找不到文件的情况下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-22
      • 2013-02-27
      • 1970-01-01
      • 2014-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多