2013-03-25 2 views
1

Я сохраняю объект с объективизацией как это:Как остановить Objectify от возврата кешированных значений?

Thing th = new Thing(); 
th.identifier = thingId; 
th.name = thingName; 
th.json = thingData; 
ofy().save().entity(thing); 
pResponse.setStatus(200); 
pResponse.getWriter().println("OK"); 

Я проверить с помощью хранилища данных браузера GAE, что значение было обновлено в базе данных. Я работаю локально. Затем я загружаю все такие вещи:

Map<String, List<Thing>> responseJsonMap = new HashMap<String, List<Thing>>(); 
List<Thing> things = ofy().load().type(Thing.class).list();   
responseJsonMap.put("things", things); 
pResponse.setContentType("application/json"); 
try { 
    GSON.toJson(responseJsonMap, pResponse.getWriter()); 
} ... 

То, что я получаю, это данные, которые существовали до сохранения. Я попытался отключить кеширование на объекте и позвонить ofy().clear(), но не работает. Если я перезагружу свой сервер или подожду достаточно долго, сохраненные данные пройдут. Я также попытался добавить .now() после сохранения, но это не обязательно, так как я могу проверить в хранилище данных, что действие завершено. Я действительно хотел бы иметь возможность загружать только что сохраненные данные. Что я делаю не так?

+0

Я использование Objectify4.0b1. –

ответ

4

То, что я делаю неправильно, не читает руководство и не забывает о шаге.

объективизации требует фильтра, чтобы очистить любые нити локальной транзакции контекстов и ожидающие асинхронные операции, которые остаются в конце запроса. Добавьте это в WEB-INF/web.xml:

<filter> 
    <filter-name>ObjectifyFilter</filter-name> 
    <filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>ObjectifyFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

Ну, хорошая вещь, чтобы проверить, если вы получаете кэшированные значения, что вы действительно не ожидали.

0

Помимо проблемы с ObjectifyFilter, то, что вы, скорее всего, видите, является последовательной последовательностью запросов в хранилище данных.

Смотреть это: https://developers.google.com/appengine/docs/java/datastore/structuring_for_strong_consistency

+0

Это хорошо, что нужно искать, но поскольку я работаю локально, я еще не ударил эту проблему. –

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