As David said, the servlet specification has mandated this behavior since 2.4, so it is not a new requirement.
This behavior is required in many applications: the application needs to serve the home page with a servlet, but it wants to use the default mechanism for serving static resources under the same domain. If the user maps the servlet to "/" then it becomes the default servlet and the static resources will not be served by default any longer. This is exactly the case in my application, which is how I stumbled upon this bug report.
The specification says "...whether a static resource or servlet in the WAR is mapped to that request URI..." The default mapping for *.jsp is not in the WAR, and neither is the default list of welcome files. Jetty needs to search for welcome-files using the specification mechanism first, and then fall back to the defaults from webdefaults.xml. In other words, Jetty doesn't need to search for servlets that match the welcome-file entries from webdefaults.xml since those defaults are an implementation detail of "If no matching welcome file is found in the manner described, the container may handle the request in a manner it finds suitable."
Athena, the main problem with your patch is that it causes non-compliant behavior to be the default. The defaults should always comply with the specification. But, it looks to me that changing the default setting of welcomeServlets to true leads to the unwanted and non-compliant behavior described by David and Greg. So, a more complex solution is needed.
In the meantime, the easiest way to work aronud this is to make a jsp (e.g. index.jsp) that forwards and/or redirects to the servlet, and make that index.jsp the first welcome-file.
See http://docs.codehaus.org/display/JETTY/Welcome+files+not+working
I did not see anything in the servlet-api that a welcome-file should map to a servlet-path.
It denotes that the welcome-file need to be an existing file.
<welcome-path> could be proposed for servlet-3.x though.
Cheers