jrubyに短時間オブジェクトを格納したいとします。オブジェクトはprocsを使用するので、dbに格納するのに問題があるようです。誰かがjrubyオブジェクトを1〜5分持続させるための良いアイデアを持っているなら、それは素晴らしいことでしょう。Jruby永続性問題
これらのオブジェクトは非常に大きく、特にCelerityブラウザオブジェクトです。今の
、私はそうのようなJRubyのでモデルを作成しました:
class Persist
@@persistHash ||= Hash.new
def self.storeItem(id, item)
@@persistHash[id.to_s] = item
end
def self.getItem(id)
return @@persistHash[id.to_s]
end
end
私はアプリをwarbledとv2をGlassfishのためにそれを展開しています。
私はプログラムを実行し、しばらくの間うまく動作します。しかし、1日後に、「店」(10-20秒)の直後に「get」と呼ぶと、私は返されません。
ログにエラーが見つかりません。
EDIT:24時間前
:
Persist.storeItemは()の後、私はアイテムが実際にハッシュテーブル(ハッシュテーブルの挿入時にメモリが不足していなかった)に挿入されていることも発見しましたPersist.getItem()はうまく動作します。
ストアのhttp呼び出し。 getのための別のhttp呼び出しはオブジェクトを返します。 24時間後
:
Persist.storeItem()Persist.getItem(続く)が正常に動作します。
ストアのhttp呼び出し。 getのための別のhttp呼び出しはnilを返します。
あなたのインスタンスがPersistのスコープを終了するときに破壊されるローカルスコープにあるのだろうかと思います。それを調べましたか? –
正しくインスタンス化する方法がわかりません。私はストアを想定し、静的クラスのメソッドを取得し、私は単に別のモデルやコントローラからPersist.storeItemを呼び出します。 Persistクラスが常にリロードされていたとしても、なぜそれが一日働くのか理解できません。 – Andy
あなたはそうです - @@に気付いたとしても、私はクラスメソッドであることに気づいていませんでした。私の次の考えは、それがいつも再読み込みされていたということでしたが、それが一日OKであれば、私は困惑しています。 23:59と24:01の時間にテストしましたか(つまり、24時間マークになっているのでしょうか、それとも0時にリセットされるのでしょうか?) –