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?

Reply via email to