2) The doFilter method of a filter is a callback and an inline method?
Because doFilter is both in the Filter class and the FilterChain class. The former being a container callback, the later being a so-called "inline" method because you call it implicitly within a filter.
I think that you'll then understand why destroy() is only a callback.