Search code examples
tomcattomcat6

Can a Tomcat docBase span multiple folders?


I apologize if this is a poor question, but I'm using Windows and looking to see if there's a way to run a webapp via Tomcat where the docBase is multiple folders.

A little more background is that we have our Eclipse project set up in a way that the web content is broken into separate folders. One folder represents what our SDK provides, one is a folder which has SDK patches, and a third is the project-specific components -- either of the last two folders could have subfolders/files that "erase" items from the first two.

I'd like to try and have my context file point back into my dev environment so that I don't need to build/deploy in order to see the changes I'm making. Is this possible?

A couple other notes:

  • We thought about using symlinks via mklink, but didn't want to create complexity if simplicity was out there.
  • This is just for running locally so simple hacks would be allowed. When we create the WAR which gets deployed to the real environment the ANT script creates a single web root.

Solution

  • I use it this way:

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

    Important for the concrete context is the path-attribute. A request is processed from top to bottom.

    So a request for /css/default.css is only processed from the 3rd context.

    A different order may catches a different context.

    This is wrong:

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

    Because /css/default.css will be catched by the first context, not the fourth.

    Edit 2013-08-10: (Not by the answer-author) It is important to note that while the above technique will work, much of it is actually incorrect. Please see comments for details.