I think that many people that use the J2eePreAuthenticatedProcessingFilter, will use it in combination with the J2eeBasedPreAuthenticatedWebAuthenticationDetailsSource, with mappable roles read from web.xml. As such, I think it would make sense to make this the default behavior, or at least simplify configuration for this use case.
To start with, I think configuration of WebXmlMappableAttributesRetriever and its superclass should be simplified. Instead of an InputStream (which requires fiddling around with ServletContextFactoryBean, ServletContextResource, etc), these classes should take a Spring Resource interface as input.
Using automatic type conversion, one can then just inject a String pointing to the XML resource. Also, WebXmlMappableAttributesRetriever should default to '/WEB-INF/web.xml'. To do so, this class probably needs to implement ResourceLoaderAware in order to manually create a Resource object.
Further on, in order to make WebXmlMappableAttributesRetriever the default mappable roles retriever in J2eeBasedPreAuthenticatedWebAuthenticationDetailsSource, the latter needs to inject the current ResourceLoader into WebXmlMappableAttributesRetriever. As such, J2eeBasedPreAuthenticatedWebAuthenticationDetailsSource would probably also need to implement ResourceLoaderAware.
The same is true for J2eePreAuthenticatedProcessingFilter, which should inject the ResourceLoader into its default J2eeBasedPreAuthenticatedWebAuthenticationDetailsSource.
So in short; J2eePreAuthenticatedProcessingFilter defaults to J2eeBasedPreAuthenticatedWebAuthenticationDetailsSource, which in turn defaults to WebXmlMappableAttributesRetriever, which in turn defaults to /WEB-INF/web.xml, which is loaded using the current (ServletContext)ResourceLoader that was injected via the ResourceLoaderAware interface.