title: Static files in (Java) App Engine not accessible
body: <p>The <a href="http://code.google.com/appengine/docs/java/gettingstarted/staticfiles.html" rel="noreferrer">example documentation</a> says that you simply need to place your files in war/ (or a subdirectory) and they should be accessible from the host (as long as they aren't JSPs or in WEB-INF). For example, if you place foo.css in war/ then you should be able to access it at <a href="http://localhost:8080/foo.css" rel="noreferrer">http://localhost:8080/foo.css</a>. However, this isn't working for me at all. NONE of my static files are accessible.</p>
  
  <p>The docs on <a href="http://code.google.com/appengine/docs/java/config/appconfig.html" rel="noreferrer">appengine-web.xml</a> say that you can also specifically denote certain types as static. I've tried this as well and it makes no difference.</p>
  
  <p>Am I missing something obvious?</p>
  
  <p><strong>UPDATE:</strong>
  Turns out one of the mappings in my web.xml was a little too aggressive. The following was the culprit:</p>
  
  <pre><code>&lt;servlet&gt;
      &lt;servlet-name&gt;Main&lt;/servlet-name&gt;
      &lt;servlet-class&gt;MainServlet&lt;/servlet-class&gt;
  &lt;/servlet&gt;
  &lt;servlet-mapping&gt;
      &lt;servlet-name&gt;Main&lt;/servlet-name&gt;
      &lt;url-pattern&gt;/&lt;/url-pattern&gt;
  &lt;/servlet-mapping&gt;
  </code></pre>
  
  <p>It seems that it was grabbing everything that wasn't grabbed be one of the other rules, which I don't understand because there was no * on the end of the url-pattern. It also seems to be directly contradictory to <a href="http://code.google.com/appengine/docs/java/config/webxml.html#Servlets_and_URL_Paths" rel="noreferrer">the documentation</a> that says:</p>
  
  <blockquote>
    <p><strong>Note:</strong> Static files, files that are served verbatim to users such as images, CSS or JavaScript, are handled separately from paths mentioned in the deployment descriptor. A request for a URL path that matches a path to a file in the WAR that's considered a static file will serve the file, regardless of servlet and filter mappings in the deployment descriptor. You can exclude files from those treated as static files using the <a href="http://code.google.com/appengine/docs/java/config/appconfig.html" rel="noreferrer">appengine-web.xml</a> file.</p>
  </blockquote>
  
  <p>So, how can I have a rule that matches the base of my domain (eg. <a href="http://www.example.com/" rel="noreferrer">http://www.example.com/</a>) and still allows the static files to filter through?</p>