Вопрос

я использую HDIV Платформа безопасности веб-приложений для веб-приложения 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" ... />

определение настроек bean-компонента

<property name="maxSize">
    <value>20</value>
</property>

не повлияло на размер кеша в моей системе.

Это было полезно?

Решение

Вы можете создать собственный IStateCache реализация интерфейса.

При использовании явной конфигурации HDIV (без использования новой пользовательской схемы HDIV) это конфигурация по умолчанию для компонента «кэш»:

<bean id="cache" class="org.hdiv.session.StateCache" singleton="false" 
  init-method="init">
    <property name="maxSize">
        <value>200</value>
    </property>
</bean>

Вы можете создать свою собственную реализацию и реализовать стратегию, соответствующую вашим требованиям.

С уважением,

Роберто

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top