2012-01-16 15 views
1

基本的なこんにちはの世界に似て再生!あなたが行うことができます: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

答えて

2

プレイしてから! ステートレスになるように設計されています webframeworkこのような状態を処理するには、コントローラのライフサイクルに依存しません。

コンテナが特にクラウドインフラストラクチャでコントローラを停止して再起動する可能性が高いです。

真剣に(あなたが言及したようにmemcachedのような)代替案を検討する必要があります。

確認ページの「セッションとフラッシュスコープ」(キャッシングのためのいくつかの施設を示す):

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

関連する問題