我有一個Web應用程序中使用Spring和Hibernate與Struts(它運行在Tomcat)線程春季
調用順序是這樣的......
Struts動作調用春季服務豆這又調用Spring DAO bean。 DAO實現是一個Hibernate實現。
問題是 我所有的spring beans都運行在同一個線程中嗎? 我可以存儲在ThreadLocal的東西,並把它在另一個豆?
我敢肯定這不會在Stateless Session Bean的工作。 EJB容器可以(或將)爲每個會話bean的調用產生一個新線程
彈簧容器的功能是否一樣?即在同一個線程中運行所有的bean?在測試用例我通過Thread.currentThread()得到了相同的ID的getId()和兩個beans-這使我相信,在行動
只有一個線程 -當我試圖JUnit測試。
或者是不可預知的行爲? 還是會在Tomcat服務器上運行時更改?
澄清 我不希望在兩個線程之間交換數據。我想將數據放入ThreadLocal中,並能夠從調用堆棧中的所有bean中檢索它。只有當所有的bean都在同一個線程中時,這纔會起作用。
你能發佈一些示例代碼嗎?我不確定你想要達到什麼目的。 – 2009-04-23 17:58:32