Question

J'utilise le Hdiv Framework de sécurité d'application Web pour une application Web Java. Chaque nouvelle requête de page Web génère des informations de sécurité internes HDIV qui sont mises en cache et utilisées pour les vérifications de sécurité.

J'ai le szenario suivant:

J'ai une page de commande qui apparaît d'une page de confirmation pendant 2 secondes lorsque quelque chose a été ajouté ou retiré du panier.

Après 50 fenêtres, la page de commande sous-jacente est supprimée du cache et une erreur se produit dans l'application.

Est-ce que quelqu'un sait comment influencer la stratégie de suppression de cache HDIV pour maintenir la peinture de base en vie?

Une façon de contourner l'org.hdiv.Session.StateCache.maxSize de 50 à 500.

Mais cela ne guérirait que les symptômes et non la cause sous-jacente.

Mise à jour:

En utilisant la solution @rbelasko, j'ai réussi à utiliser l'original org.hdiv.session.StateCache Pour changer le maxsize en 20 et vérifier dans le débogage-log, les Cachentries sont rejetées après 20 entrées.

Quand je l'ai changé pour utiliser ma propre implémentation, cela n'a pas fonctionné

Définition du haricot

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

Ma propre classe

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

Dans le débogage-log n'étaient pas des entrées de StateCachetest

Des idées?

Mise à jour 2:

Bien que je n'étais pas en mesure de charger une implémentation d'IstateCache différente via Spring, j'ai pu rendre cette erreur moins probable en utilisant

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

La définition de détraction de haricots

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

n'a eu aucun effet sur la cache-dimension dans mon système.

Était-ce utile?

La solution

Vous pouvez créer une coutume IStateCache Implémentation d'interface.

En utilisant la configuration explicite HDIV (n'utilisant pas le nouveau schéma personnalisé de HDIV) Il s'agit de la configuration par défaut du bean "cache":

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

Vous pouvez créer votre propre implémentation et mettre en œuvre la stratégie qui correspond à vos besoins.

Salutations,

Roberto

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top