The Virtual Directory idea is good, but this problem can typically be solved easy enough by defining a custom servlet. No need for an additional component at all.
<servlet>
<servlet-name>Mah Servlet</servlet-name>
<servlet-class>org.mahorg.MahServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Mah Servlet</servlet-name>
<url-pattern>*.xml</url-pattern>
</servlet-mapping>
Then you just write a servlet that can do the following things...
1. Determine filename and folder location looking at request context path
2. Get bytes of file using easy tool like Apache Commons IO.
3. Put bytes into response stream
4. Set response header to XML mime type
5. Response complete
Don't forget the obligatory security concerns and file permissions etc...