2012-01-16 58 views
1

就像在基本的hello world玩!应用程序,你可以这样做:Scala/Play:将数据保存在单例中是否安全?

object Application extends Controller { 
    var ak = 0 
    import views.Application._ 

    def index = { 
     ak = ak + 1 
     html.index("Your Scala application is ready!" + ak) 
    } 

} 

而且每次刷新页面,该数目的增量。有谁知道这种行为是我可以信赖的,还是我应该完全避免的?似乎我可以用它来做一些简单的计算的本地缓存,同时避免将数据序列化/传输到memcached

+0

我觉得从不同的线程递增变量这样的时候还可以存在竞争条件。 – Sonson123 2015-05-02 18:03:36

回答

2

由于Play!被设计成一个无状态 webframework我不会依赖Controller生命周期来处理这种状态。

容器极有可能会停止并重新启动控制器,特别是在云基础架构上。

你应该认真研究一下替代方案(就像你提到的memcached一样)。

检查部分“会议和Flash的作用域”页(显示缓存一些设施):

http://www.playframework.org/documentation/1.1.1/controllers

相关问题