내 상황은 다음과 같습니다.
내 테이블에 Session 목록이 있습니다.
데이터 스토어의 마지막 세션에 조건부 플레이어가 있는지 확인하는 코드를 작성합니다.
새 세션을 만들지 않으면.AppEngine 개체 지연을 유지 하시겠습니까?
public Session getEligeableSession(){
Session session;
session = ds.getLastSession();
if(session.numPlayers > 3){
newSession();
session = ds.getLastSession();
}
return session;
}
이 지역에 완벽하게 작동하지만 AppEngine에의 AppSpot에하지 않습니다 :
그것은이 같은 작은 선물을 간다.
AppSpot에서 나는 채워진 세션을 다시 얻는다. 내 코드가 새로운 세션이 완전히 지속될 때까지 기다리지 않고 단지 이전 세션을 다시 얻는다는 결론을 내려야한다.
내 결론이 옳습니까? 그렇다면 어떻게하면이 자비로 해결할 수 있을까요?
'지연'을 검색하면 Google/SO에 아무런 결과가 없기 때문에 그러한 일이 없다고 생각됩니다 (동기식). 내 코드에 다른 실패가 있습니다. (아마도 목록에서 마지막 개체를 가져 오는 것입니다 AppEngine에서 다르게 작동 함)
모든 도움/조언을 보내 주시면 감사하겠습니다.
요약 :
세션 (Object)를 가지고 (목록) 4 명 선수 (Object)를
getLastSession() 마지막 하나를 데이터 저장소에서 전체 목록을 검색하고 얻을 ( 크기-1).
newSession()은 새 Session 객체를 만들고 유지합니다. 요청에 따라
편집 :
public List<Session> getAll(){
pm = PMF.get().getPersistenceManager();
String query = "select from " + Session.class.getName();
@SuppressWarnings("unchecked")
List<Session> sessions = (List<Session>) pm.newQuery(query).execute();
return sessions;
}
public Session getLastSession(){
List<Session> sessions = getAll();
Session session = sessions.get(sessions.size()-1);
session.activeGame = session.numPlayers == 4 ? true : false;
pm.close();
return session;
}
public int insert(Session session){
pm = PMF.get().getPersistenceManager();
int status = 0;
try {
pm.makePersistent(session);
} finally {
pm.close();
}
return status;
}
코드는 '합리적인'보인다는 더 재미있는 물건 AFAIK 일이 없습니다. master-slave 옵션을 사용하고 있습니다.
이 newSession의 구현 기능 및 getLastSession? 여기에 실제 코드가 중요합니다! 그리고 높은 복제 데이터 저장소를 사용하고 있습니까? –
@Nick Johnson 요청한대로 내 게시물을 업데이트했습니다. 잊어 버린 : NewSession 그냥 삽입 (새 세션)입니다; – Rohan
하나의 영속성 관리자를 각 기능에 새로 추가하지 않고 모든 기능에 전달하려고 했습니까? –