Playframework 1.x 静态方法如何以线程安全的方式工作

Posted

技术标签:

【中文标题】Playframework 1.x 静态方法如何以线程安全的方式工作【英文标题】:How Playframework 1.x static method works in a thread safe way 【发布时间】:2013-04-19 17:56:45 【问题描述】:

可能是一个愚蠢的问题,但我是新手学习 Play 框架 1.2.5。 我注意到控制器操作都是静态方法,我假设每个请求都将在单独的线程中处理。如果是这样,Play 框架如何确保这些静态控制器方法是线程安全的?我认为,只要我们不在控制器方法之间共享任何东西,那么我们就很好(?),如果我错了,请纠正我。

提前致谢。

【问题讨论】:

【参考方案1】:

是的,我们很好。如您所知,HTTP 是无状态,因此请求之间不会共享任何内容。 Play 在处理请求时使用ThreadLocals。每个请求都有自己的线程,因此您可以完全控制当前请求 - 响应生命周期。

如果你想在控制器之间共享数据,你有 session 对象,但是它非常小并且只接受 Strings。对于其他数据类型或不同的共享实现,您应该使用Cache 实现。有关详细信息,请参阅 session 和 cache 文档。

祝你好运!

【讨论】:

以上是关于Playframework 1.x 静态方法如何以线程安全的方式工作的主要内容,如果未能解决你的问题,请参考以下文章

在 playframework 中提供具有身份验证的静态文件

播放框架:如何用静态 js 和 css 渲染静态 HTML 页面?

Playframework 1.x 带有协商标头的未经授权的响应

playframework 1.x 是不是处理跨站点脚本 (xss)?

是否建议启动 Playframework 1.x 应用程序?

带有经典查询分隔符的 PlayFramework 1.x 路由