Servlet specification 2.5, article SRV.9.12 clearly states, that instantiation and initialization of filters should be done before servlets, regardless of their load-on-startup configuration.
This doesn't seem to be the case. My application has a closely related filter and servlet pair, and servlet depends on initializations made by the filter. My servlet throws an exception at deployment time because the filter initialization has not been done yet.
A quick glance at com.caucho.server.webapp.WebApp supported the impression that the init sequence is wrong: lines 1800 and 1801 call _servletManager.init() and _filterManager.init(), in this order.