2017-08-22 2 views
0

J'essaye de mettre en cache une page Web simple dans Ehcache. Grâce à l'aide d'un autre post SO, j'ai découvert que je devais implémenter mon propre filtre basé sur le code Ehcache 2. Quand je regarde le filter, je ne le comprends pas. Où appelle-t-il jamais le cache pour renvoyer une valeur? Voici ma mise en œuvre (tout à fait peut-être mal):Où le filtre pour la mise en cache de page Web simple Ehcache 3 appelle-t-il le cache?

package com.sentiment360.pulse.cache; 

import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.xml.bind.Element; 
import org.ehcache.Cache; 
import org.ehcache.CacheManager; 
import org.ehcache.config.Configuration; 
import static org.ehcache.config.builders.CacheManagerBuilder.newCacheManager; 
import org.ehcache.core.Ehcache; 
import org.ehcache.event.CacheEvent; 
import org.ehcache.event.CacheEventListener; 
import org.ehcache.xml.XmlConfiguration; 

import javax.servlet.http.HttpServletRequest; 

public class SimplePageCachingFilter implements CachingFilter { 
    public static final String DEFAULT_CACHE_NAME = "SimplePageCachingFilter"; 
    private Logger LOG = Logger.getLogger(this.getClass().getName()); 
    private String cacheName="basicCache"; 

    protected String getCacheName() { 
     if (cacheName != null && cacheName.length() > 0) { 
       LOG.log(Level.INFO,"Using configured cacheName of {}.", cacheName); 
       return cacheName; 
      } else { 
       LOG.log(Level.INFO,"No cacheName configured. Using default of {}.", DEFAULT_CACHE_NAME); 
       return DEFAULT_CACHE_NAME; 
      } 
    } 

    protected CacheManager getCacheManager() { 
     return CacheManager.getInstance(); 
    } 

    protected String calculateKey(HttpServletRequest httpRequest) { 
     StringBuffer stringBuffer = new StringBuffer(); 
     stringBuffer.append(httpRequest.getMethod()).append(httpRequest.getRequestURI()).append(httpRequest.getQueryString()); 
     String key = stringBuffer.toString(); 
     return key; 
    } 
} 

Répondre

1

Voir la super class. Mais vous faites implements CachingFilter? Où est cette interface? On dirait que vous essayez de "copier" les précédents SimplePageCachingFilter Ehcache, non? Vous auriez également besoin de porter cette super classe abstraite (et peut-être lire un peu sur javax.servlet.Filter, au cas où ceux-ci ne sont pas tout à fait clair ...)

Maintenant, vous pouvez également envoyer un ping à l'équipe de développement sur le Ehcache Dev Google group ce. Ils devraient être en mesure de fournir des pointeurs et ensuite aider à la mise en œuvre. On dirait une bonne idée pour une future demande de traction! :)