2016-03-02 2 views
0

Не могли бы вы помочь мне решить эту проблему. Здесь я храню некоторые данные в Datastore с помощью JDO-интерфейса, используя вызов AJAX. Я храню данные в хранилище данных и получаю их немедленно. Выбрав несколько раз, он возвращает NULL в качестве ответа (его не всегда возвращает NULL. Только несколько раз он возвращает NULL). Не могли бы вы помочь мне исправить это. Ниже Данный код используется для хранения и извлечения данныхХранение и извлечение данных из хранилища данных с использованием JDO

Этот код для хранения данных,

public void saveSchedule(String listName, String email, String date, String time, String details, String name) 
{ 

     Date hiredate = new Date(); 
     String gmtdate = hiredate.toGMTString(); 
     Schedule schedule = new Schedule(); 
     schedule.setName(name); 
     schedule.setListName(listName); 
     schedule.setEmail(email); 
     schedule.setDate(date); 
     schedule.setDateGMT(gmtdate); 
     schedule.setDetails(details); 
     schedule.setTime(time); 
     p = PMF.get().getPersistenceManager(); 
     try 
     { 
      p.makePersistent(schedule); 
     } 
     catch(Exception e) 
     { 
      System.out.println(e); 
     } 
     finally 
     { 
      p.close(); 
     } 
    } 

Этот код для извлечения данных,

public String savedDataRetrive(String details, String email) { 

     p = PMF.get().getPersistenceManager(); 
     Query q = p.newQuery(Schedule.class); 
     q.setFilter("details == '"+details+"' && email == '"+email+"'");  
     List<Schedule> sch = (List<Schedule>) q.execute(); 
     String data = null; 
     ObjectMapper n=new ObjectMapper(); 
     try { 
      data = n.writeValueAsString(sch); 

     } catch (JsonGenerationException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (JsonMappingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }finally{ 
      p.close(); 
     } 
     return data; 
    } 

ответ

0

Вот полезный пример:

https://github.com/mattburns/OddPrints/blob/master/op-gae/src/com/oddprints/servlets/Edit.java#L89

@GET 
@Path("/basic/sample") 
@Produces(MediaType.TEXT_HTML) 
public Viewable loadBasicSample(@Context HttpServletRequest req) 
     throws FileUploadException, IOException, URISyntaxException { 

    return viewSampleImage(req, Settings.SAMPLE_PHOTO_BLOB_KEY, 
      Settings.SAMPLE_PHOTO_BLOB_SIZE, new URL(
        "http://www.oddprints.com/images/sample.jpg")); 

} 

Viewable viewSampleImage(HttpServletRequest req, Settings blobKeySetting, 
     Settings blobSizeSetting, URL image) throws MalformedURLException, 
     IOException { 
    String blobKeyString = ApplicationSetting.getSetting(blobKeySetting); 
    if (blobKeyString == null) { 

     InputStream imgStream = image.openStream(); 

     byte[] bytes = IOUtils.toByteArray(imgStream); 

     BlobKey blobKey = ImageBlobStore.INSTANCE.writeImageData(bytes); 
     blobKeyString = blobKey.getKeyString(); 
     ApplicationSetting.putSetting(blobKeySetting, blobKeyString); 
     ApplicationSetting.putSetting(blobSizeSetting, "" + bytes.length); 
    } 
    String blobSize = ApplicationSetting.getSetting(blobSizeSetting); 

    req.getSession().setAttribute("blobKeyString", blobKeyString); 
    req.getSession().setAttribute("blobSize", blobSize); 
    req.getSession().setAttribute("basicMode", Boolean.TRUE); 

    return viewBasic(req); 
} 
1

Datastore реплицирует данные на нескольких датацентрах. Это обеспечивает высокий уровень доступности для чтения и записи, однако большинство запросов: в конечном итоге.

Eventual консистенция модель согласованность используется в распределенных вычислений для достижения высокой доступности, что неформально гарантирует , что, если нет новых обновлений не будут сделаны к данному элементу данных, в конечном счете, все обращается к этому элементу будет возвращать последние обновленное значение.

Это, скорее всего, причина, по которой ваш запрос иногда ничего не возвращает.

Я бы порекомендовал вам пройти через Structuring Data for Strong Consistency статью.

0

Я бы рекомендовал использовать memcache, таким образом, выбор будет быстрее, и вы получите меньше нулевых объектов в обратном порядке.

Смежные вопросы