0

Мы пытаемся настроить dynamodb session manager на tomcat 7 в среде эластичного материала, работающего на одном сервере.Tomcat 7 Стойкий диспетчер сеансов преждевременно загружается из магазина

Мы можем видеть, что данные сеанса периодически копируются на dynamodb, но иногда старые данные сеанса (для того же сеанса) загружаются обратно из dynamodb. В нашем приложении это проявляется, загружая предыдущий элемент, на который вы смотрели (элемент хранится в сеансе). Файл cookie JSESSIONID остается таким же, и клиент сохраняет один и тот же сеанс. Если мы выключим диспетчер сеансов, проблема будет решена.

Вот содержание нашего context.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Context> 
<WatchedResource>WEB-INF/web.xml</WatchedResource> 
<Manager 
    className="com.amazonaws.services.dynamodb.sessionmanager.DynamoDBSessionManager" 
    Table="SessionTable" 
    RegionId="eu-west-1"/> 
</Context> 

Мы попытались установки maxIdleBackup и maxIdleSwap в больших количествах, как это определено в tomcat 7 docs безрезультатно.

Если мы установим maxIdleBackup и maxIdleSwap в ноль, ошибка будет уменьшена, потому что данные сеанса будут скопированы на dynamodb чаще, но это не решит проблему.

Что вызывает tomcat для загрузки данных сеанса из магазина? Я понял, что его следует загружать только из магазина, если он вообще недоступен (клиент попадает в другой кота).

ответ

0

В итоге мы прибегли к использованию JDBCStore, у которого нет этой проблемы. Я надеюсь вернуться к этой проблеме в будущем, учитывая больше времени.

0

Я считаю, что вы страдаете от асинхронной природы (и неявного необходимости липких сессий) осуществления, как отмечено в issue #6

Если вы не используете липкие сессии я рекомендую вам пойти на Redis approach, который является синхронным

+0

Спасибо за ваш ответ. Мы используем липкие сеансы и все еще видим проблему при использовании одного сервера. Я попытался отладить код, но не могу точно определить проблему. По какой-то причине сеанс загружается из базы данных до резервной копии текущей версии. Как вы говорите, это может быть асинхронный характер резервного копирования, но наше приложение в основном основано на форме. – drei01

+1

В итоге мы прибегли к использованию встроенного JDBCStore, у которого нет этой проблемы. – drei01