잠시 jruby에 개체를 저장하고 싶습니다. 개체는 procs를 사용하므로 DB에 저장하는 데 문제가있는 것 같습니다. 누구든지 jruby 오브젝트를 1-5 분 동안 유지하는 좋은 아이디어가 있다면 훌륭합니다.Jruby 영속성 문제
이러한 개체는 매우 크며 특히 Celerity 브라우저 개체입니다. 나는 응용 프로그램을 warbled 한
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
및 v2를 글래스 피시 그것을 배치 :
지금, 난과 같이 JRuby에서의 모델을 만들었습니다.
프로그램을 실행하면 잠시 동안 제대로 작동합니다. 그러나 하루가 지나면 '매장'(10-20 초) 직후에 'get'이라고 부르면 나는 반환되지 않습니다.
로그에서 오류를 찾을 수 없습니다.
편집 :) (
Persist.storeItem 다음 :
24 전에 시간을 : 나는 또한 항목이 참 (해시 테이블은 삽입시 메모리가 부족하지 않은) 해시 테이블에 삽입되는 것을 발견했다 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:00에 재설정 되었습니까?) –