Я использую HDIV Web Application Security Framework для веб-приложения Java. Каждый новый запрос веб-страницы генерирует внутреннюю информацию о безопасности hdiv, которая кэшируется и используется для проверок безопасности.
У меня есть следующий сценарий:
У меня есть одна страница заказа, которая выскакивает страницу подтверждения на 2 секунды, когда что-то добавляется или удаляется из корзины.
после 50 всплывающих страниц нижележащая страница заказа удаляется из кэша, и в приложении возникает ошибка.
Кто-нибудь знает, как повлиять на стратегию удаления кэша hdiv, чтобы поддерживать базовую страницу?
Одним из способов является увеличение org.hdiv.session.StateCache.maxSize с 50 до 500.
но это только излечит симптомы, а не основную причину.
Обновление:
с использованием решения @rbelasko
Мне удалось использовать исходный org.hdiv.session.StateCache
, чтобы изменить maxSize на 20, и в журнале отладки проверил, что кэшированные записи закрываются после 20 записей.
Когда я изменил его, чтобы использовать собственную реализацию, он не работал
Определение боба
<bean id="cache" class="com.mycompany.session.StateCacheTest" singleton="false"
init-method="init">
<property name="maxSize">
<value>20</value>
</property>
</bean>
Мой собственный класс
public class StateCacheTest extends StateCache
{
private static final Log log = LogFactory.getLog(StateCacheTest.class);
public StateCacheTest()
{
log.debug("StateCache()");
}
@Override
public void setMaxSize(final int maxSize)
{
super.setMaxSize(maxSize);
if (log.isDebugEnabled())
{
log.debug("setMaxSize to " + maxSize);
}
}
}
В журнале отладки не было записей от StateCacheTest
Есть идеи?
Обновление 2:
Хотя я не смог загрузить другую реализацию IStateCache через Spring, я смог уменьшить вероятность этой ошибки с помощью
<hdiv:config ... maxPagesPerSession="200" ... />
определение параметров бина
<property name="maxSize">
<value>20</value>
</property>
не влиял на размер кэша в моей системе.