Pregunta

Estoy usando el HDIV Marco de seguridad de la aplicación web para una aplicación web de Java. Cada nueva solicitud de página web genera información de seguridad interna HDIV que se almacena en caché y se usa para verificaciones de seguridad.

Tengo el siguiente szenario:

Tengo una página de pedido que aparece una página de confirmación durante 2 segundos cuando se agregó o se eliminó algo del carrito.

Después de 50 ventanas emergentes, la página de pedido de la capa inferior se elimina del caché y para ello se produce un error en la aplicación.

¿Alguien sabe cómo influir en la estrategia de eliminación de caché de HDIV para mantener vivo el baseptage?

Una forma de evitar es aumentar la sesión org.hdiv.session.statecache.maxSize de 50 a 500.

Pero esto solo curaría los síntomas no la causa subyacente.

Actualizar:

utilizando la solución @rbelasko Sugerí a usar el original org.hdiv.session.StateCache para cambiar el tamaño máximo a 20 y verificado en el registro de depuración que los cachentries se desestiman después de 20 entradas.

Cuando lo cambié para usar mi propia implementación, no funciona

definición de frijol

<bean id="cache" class="com.mycompany.session.StateCacheTest" singleton="false" 
  init-method="init">
    <property name="maxSize">
        <value>20</value>
    </property>
</bean>

mi propia clase

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);
        }
    }
}

En el registro de depuración no fueron entradas de STATECACHETEST

¿Alguna idea?

Actualizar 2:

Si bien no pude cargar una implementación de iStatecache diferente a través de la primavera, pude hacer que este error sea menos probable que se use

<hdiv:config ... maxPagesPerSession="200" ... />

la definición de configuración de frijol

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

no tuvo efecto en el cachesize en mi sistema.

¿Fue útil?

Solución

Podría crear un iStatecache implementación de la interfaz.

Uso de la configuración explícita de HDIV (no con el nuevo esquema personalizado de HDIV) Esta es la configuración predeterminada para "caché" Bean:

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

Podría crear su propia implementación e implementar la estrategia que se ajuste a sus requisitos.

Saludos,

Roberto

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top