我有一个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