Tapestry是否管理应用程序内的所有线程?

时间:2013-03-22 13:46:53

标签: inversion-of-control ioc-container tapestry

考虑服务,在其中启动一些thread。将Tapestry 5部分管理此帖子。在这样的线程内关闭hibernate个会话? (例如,我们可以在服务中传递Session这样的子线程中的对象。线程死后,Tapestry会安全地关闭这个会话吗?)。

2 个答案:

答案 0 :(得分:2)

Tapestry只能管理AppModule中声明的内容。

作为一个简单的规则,如果你使用“new”关键字,它不是由tapestry管理的。

如果您希望tapestry管理您的runnable,请查看ParallelExecutor

如果你想模仿一个挂毯托管线程,你必须在runnable完成后调用Perthreadmanager.cleanup()。

答案 1 :(得分:0)

Hibernate会话附加到处理当前请求的Web容器的线程。

如果您决定生成自己的线程并将其传递给Session,那么只有在Tapestry提交之前或在上述Web容器的线程结束处理该请求之前完成对Session的更改才会提交。

Tapestry对hibernate会话的控制绑定到当前请求,在处理请求后会话关闭,因此产生另一个超出使用Session请求的线程将是一个坏主意。