Alexander Daniel wrote: > On 03.07.2009, at 10:41, Carsten Ziegeler wrote: > >> Alexander Daniel wrote: >>> Does somebody know why ThreadLocal is used in PoolableProxyHandler [1] >>> for the componentHolder in Cocoon 2.2? >>> >> Sure :) >> >> Whenever components are taken out of the pool they need to be put back >> somehow, so they are available for other clients again. >> We use a thread local which is cleared when the request finishes, >> so all used components get back into the pool. > > Thanks for the answer Carsten. What you describe is done by the > destruction callback mechanism of Spring. But why can't we simply use a > direct reference [2] to the component? Why is a ThreadLocal used as key > to the component? > Hmm, not sure if I understand you correctly. The poolable factory returns a single instance to spring which is the proxy - spring has no knowledge of poolable components. Therefore the proxy together with a thread local is used to internally forward the method calls to instances from the pool. There is a separate instance per thread - otherwise you would run into multi-threading issues as the same instance would be used across requests.
Carsten -- Carsten Ziegeler cziege...@apache.org