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?