Tomcat 7.0.61 Java 1.7.0_75 Scenario:
Class1 static Type ThreadLocal variable static Type getThreadLocal(){...} static Type setThreadLocal(){...} static void destroy(){variable.remove} Class2 static Type ThreadLocal variable static Type getThreadLocal(){...} static Type setThreadLocal(){...} static void destroy(){variable.remove} user makes a request to a stateless jax-ws web service request hits filter1 filter1 - Class1.setThreadLocal filter1 - calls chain.doFilter() filter2 - calls methods on Class1 filter2 - Class2.setThreadLocal filter2 - calls chain.doFilter() web service method processes request Removing the thread local: web service method calls Class1.destroy() and Class2.destroy() (and it does this for all exception cases within said web service method) Is this an acceptable pattern or is it better to implement a ServletRequestListener to remove thread local variables?