Я работаю над проектом We Maven Multimodule в google appengine. Есть 3 модуля. по умолчанию, бэкэнд и api. backend и api - это модули, которые используют objectify для хранения данных, а по умолчанию содержат код внешнего интерфейса. Все веб-запросы из модуля по умолчанию обрабатываются внутренним модулем и отлично работают. Но с модулем api я столкнулся с проблемой. Некоторые данные отправляются из внешних приложений через API и сохраняются или обновляются в этом приложении с помощью Objectify. Когда я пытаюсь получить то же самое, чтобы показать его в разделе сведений о странице, возвращаются устаревшие данные (не обновленные данные). Я не сталкиваюсь с этой проблемой, когда запрос выполняется через пользовательский интерфейс.
Примечание: 1. Я настроил ObjectifyFilter в Интернете. xml как для модулей backend, так и для api. Я считаю, что это выполняет очистку при обновлении / сохранении. Он настроен для всех конечных точек в приложении. (/ *)
Это происходит только после обновления для этой сущности. Все объекты зарегистрированы.
Использование ofy.clear () перед load () работает хорошо. Я считаю, что это очищает кеш сеанса.
Нет проблем с порядком фильтрации (есть один дополнительный фильтр аутентификации в дополнение к фильтру Objectify.). ObjectifyFilter имеет приоритет, поскольку я настроил выше AuthFilter.
Я использовал масштабирование basi c, но позже удалил его, увидев поток github на Objectifyfilter topi c, но не удалось решить эту проблему.
Подобная проблема возникла еще в одном месте, но я обработал ее как отдельную очередь задач, поскольку это зависимая задача (запускается при сохранении другого объекта / обновлено). Но это унитарная операция.
Код выборки, который я использую сейчас:
log.info("DAO :: fetch()");
if(ofy.isLoaded(Key.create(Class.forName(className),key))) {
log.info("session cache is loaded and key is present in it.");
ofy.clear();
}else {
log.info("session cache is not loaded and key is not present in it. ==========> ofy.clear()");
}
entity = (DAO) ofy.load().type(Class.forName(className)).id(key).now();