S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

ThreadLocalTargetSource

なんだ?これは?
http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/aop/target/ThreadLocalTargetSource.html
スレッドをコピーします???同じインスタンスでも別スレッドで呼び出します???
なんとなく、SpringのAOPで?DynamicProxyで?インスタンス作って、呼び出した時にスレッドが別スレッドになる場合があるよ、ってことかいな???
でも、こいつ使えばスレッド(ThreadLocal)をコピーしますよ、みたいな。
http://static.springframework.org/spring/docs/2.0.x/reference/aop-api.html#aop-ts-threadlocal
下記のBean定義しとけば、ちゃんとスレッドを紐付けてくれるって???

<bean id="threadlocalTargetSource" class="org.springframework.aop.target.ThreadLocalTargetSource">
  <property name="targetBeanName" value="(AOPの対象となるBeanのID)"/>
</bean>

訳わからんけど…
AOPのBeforeAdviceの処理の中で、FacesContextのHTTPRequestからセッション情報を取得して、POJOの世界にセッション情報を引き渡してるんですが、FacesContext.getCurrentInstance()の戻り値がnullになってることが、にあるんだけど(謎
FacesContextもPOJOの世界のセッション情報もThreadLocalで保持してるから、スレッドが同じだったらnullにならないハズなんだけど。
(プーリングを考慮した処理のせいで?)SpringのAOP?DynamicProxy?の仕組みの中で、呼び出したオブジェクトのスレッドとは別スレッドで実行される場合がある、とかあるんかな?とか思ってみる。

発番のロジックで、意図的に別スレッドにしてたので、問題なかったです(謝