Thanks.
I debugged it, with a result that I found surprising.
In my version, UrlRewriteFilter is doing the following:
InputStream inputStream = context.getResourceAsStream(confPath);
So I built a filter to wrap UrlRewriteFilter and added some logging:
System.out.println(filterConfig.getServletContext().getResource("/").toString());
Which prints:
file:/
It took me a while to work out that yes, that really does mean "/" - the root directory of the whole machine. Sure enough, once I put urlrewrite.xml at /urlrewrite.xml it worked.
Obviously this is less than ideal! I was expecting it to be the base of the application classpath perhaps.
Does anyone have further tips to debug this? The obvious filterConfig.getServletContext().getResource("urlrewrite.xml") gives java.net.MalformedURLException.
Nick