Tomcat docBase可以跨多个文件夹吗?

Mat*_*ani 5 tomcat tomcat6

如果这是一个糟糕的问题我很抱歉,但是我正在使用Windows并且想要查看是否有办法通过Tomcat运行webapp,其中docBase有多个文件夹.

更多的背景是我们的Eclipse项目设置方式是将Web内容分解为单独的文件夹.一个文件夹代表我们的SDK提供的内容,一个是具有SDK补丁的文件夹,第三个是项目特定的组件 - 最后两个文件夹中的任何一个都可以具有从前两个"擦除"项目的子文件夹/文件.

我想尝试将我的上下文文件指向我的开发环境,这样我就不需要构建/部署以查看我正在进行的更改.这可能吗?

其他几点说明:

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

Pet*_*der 3

我这样使用它:

    <Context docBase="jquery"                path="/js/jquery" />
    <Context docBase="foobar/www/javascript" path="/js" />
    <Context docBase="foobar/www/css"        path="/css" />
    <Context docBase="foobar"                path="/" />
Run Code Online (Sandbox Code Playgroud)

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

/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" />
Run Code Online (Sandbox Code Playgroud)

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

编辑2013-08-10:(不是答案作者)值得注意的是,虽然上述技术可行,但其中大部分实际上是不正确的。详情请参阅评论。

  • Servlet 规范规定,将 URL 映射到 Web 应用程序时,最长匹配获胜,因此对 `/css/whatever.css` 的请求应该由具有 `/css` 上下文路径的 Web 应用程序处理,而不是使用 ROOT 上下文(即此答案中配置不正确:路径应该是“”而不是“/”)。 (2认同)