This all goes way back to the days of WebWork and how much they loved statics. WebWork basically used static singletons for everything, causing a) a really complicated startup order and b) the ability to only run one instance of the framework. In those days (and perhaps still?) there wasn't just one filter but at least two to allow proper thread-local cleanup, because what wasn't accessed statically was accessed statically using thread locals as the means (ActionContext.getContext() for example).
Therefore, with two filters that contain state that needs to be accessed statically, we were limited to threadlocals to track that state. When I was working on it, I got it to the point that most statics were gone and we had a decent injection system to avoid all the static accessors, but they were still there in case you needed them. I don't know what the code is like now, but it sounds like perhaps it still hasn't completely gotten away from statics and threadlocals. As a side note, back then (2008?) we did some profiling and found that actually all the thread locals were eating up a bunch of time in the request, so it is more than just a general "icky" sense that should drive their removal. Again, my knowledge is pretty dated, but that's where things came from. Don On Tue, Apr 23, 2013 at 7:40 PM, ppm10103 <[email protected]> wrote: > > At 2013-04-24 03:44:22,"Lukasz Lenart" <[email protected]> wrote: > > >2013/4/23 ppm10103 <[email protected]>: > >> The Dispatcher will have only one instance, > >> it bind to ThreadLocal is for what? > > > >For thread safety, then you can access Dispatcher from a thread > >without synchronisation. That's my opinion :-) > > > > > >Regards > >-- > >Ćukasz > >+ 48 606 323 122 http://www.lenart.org.pl/ > > > >--------------------------------------------------------------------- > >To unsubscribe, e-mail: [email protected] > >For additional commands, e-mail: [email protected] > > > > Thanks for your help,but I look into the sourcecode ,the Dispatcher will > only be one instance, > so even put it in the ThreadLocal,every thead alse access the same > Dispatcher instance, > so I think it's not for thread safe,so I still want to konw it's for what?
