Hi Paul,
Correct me if i'm wrong but does this mean it's called by the container and itself by doing chain.dofilter?
Yes, the first filter is called by the container because a filter is configured in the web.xml, all the following filters in the chain are called from your doFilter() method's chain.doFilter().
Regards,
Frits