Results 1 to 1 of 1

Thread: EhCache issue using Spring

  1. #1
    Join Date
    Sep 2008
    Location
    Chicagoland, IL
    Posts
    348

    Default EhCache issue using Spring

    I have a project that I am using a persistent cache on (elements live forever, persisted to disk and reloads from disk when the app restarts). I have the caching piece working fine as well as disk persistence (I can see the files being written to the disk). The issue I'm having is getting EhCache to reload the data from disk when I reload the app. While I'm using this in a grails application, the classes used for caching are from the core Spring library which is why I posted it here. My questions specifically are:

    1. What am I missing with my configuration?
    2. What can I do to debug the files being written to disk (to see if there is an issue with shutdown preventing it from being reloaded)?



    My configuration is as follows:

    ehcache.xml
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <ehcache>
         <!-- This path is for development only...I'm not rebooting or anything between stop and start so the files are still there -->
        <diskStore path="/tmp"/>
    
        <defaultCache maxElementsInMemory="1000" 
                      eternal="false" 
                      timeToIdleSeconds="120" 
                      timeToLiveSeconds="120" 
                      overflowToDisk="false"/>
    
        <cache name="grails.plugin.persistent_cache.default"
    		maxElementsInMemory="500" eternal="true"
            overflowToDisk="true"
            diskPersistent="true" diskExpiryThreadIntervalSeconds="1"
            memoryStoreEvictionPolicy="LFU" />
    </ehcache>
    web.xml
    Code:
    <web-app xmlns="http://java.sun.com/xml/ns/javaee" metadata-complete="true" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    	<display-name>/someapplication-1.0-SNAPSHOT</display-name>
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>/WEB-INF/applicationContext.xml</param-value>
    	</context-param>
    	<context-param>
    		<param-name>webAppRootKey</param-name>
    		<param-value>someapplication-1.0-SNAPSHOT</param-value>
    	</context-param>
    	<context-param>
    		<param-name>sample</param-name>
    		<param-value>Sample Value</param-value>
    	</context-param>
    	<filter>
    		<filter-name>springSecurityFilterChain</filter-name>
    		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    	</filter>
    	<filter>
    		<filter-name>sitemesh</filter-name>
    		<filter-class>org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter</filter-class>
    	</filter>
    	<filter>
    		<filter-name>DeclaredResourcesPluginFilter</filter-name>
    		<filter-class>org.grails.plugin.resource.ProcessingFilter</filter-class>
    	</filter>
    	<filter>
    		<filter-name>AdHocResourcesPluginFilter</filter-name>
    		<filter-class>org.grails.plugin.resource.ProcessingFilter</filter-class>
    		<init-param>
    			<param-name>adhoc</param-name>
    			<param-value>true</param-value>
    		</init-param>
    	</filter>
    	<filter>
    		<filter-name>charEncodingFilter</filter-name>
    		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    		<init-param>
    			<param-name>targetBeanName</param-name>
    			<param-value>characterEncodingFilter</param-value>
    		</init-param>
    		<init-param>
    			<param-name>targetFilterLifecycle</param-name>
    			<param-value>true</param-value>
    		</init-param>
    	</filter>
    	<filter>
    		<filter-name>urlMapping</filter-name>
    		<filter-class>org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter</filter-class>
    	</filter>
    	<filter>
    		<filter-name>hiddenHttpMethod</filter-name>
    		<filter-class>org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter</filter-class>
    	</filter>
    	<filter>
    		<filter-name>grailsWebRequest</filter-name>
    		<filter-class>org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter</filter-class>
    	</filter>
    	<filter-mapping>
    		<filter-name>charEncodingFilter</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
    	<filter-mapping>
    		<filter-name>DeclaredResourcesPluginFilter</filter-name>
    		<url-pattern>/static/*</url-pattern>
    	</filter-mapping>
    	<filter-mapping>
    		<filter-name>AdHocResourcesPluginFilter</filter-name>
    		<url-pattern>/images/*</url-pattern>
    	</filter-mapping>
    	<filter-mapping>
    		<filter-name>AdHocResourcesPluginFilter</filter-name>
    		<url-pattern>/css/*</url-pattern>
    	</filter-mapping>
    	<filter-mapping>
    		<filter-name>AdHocResourcesPluginFilter</filter-name>
    		<url-pattern>/js/*</url-pattern>
    	</filter-mapping>
    	<filter-mapping>
    		<filter-name>AdHocResourcesPluginFilter</filter-name>
    		<url-pattern>/plugins/*</url-pattern>
    	</filter-mapping>
    	<filter-mapping>
    		<filter-name>hiddenHttpMethod</filter-name>
    		<url-pattern>/*</url-pattern>
    		<dispatcher>FORWARD</dispatcher>
    		<dispatcher>REQUEST</dispatcher>
    	</filter-mapping>
    	<filter-mapping>
    		<filter-name>grailsWebRequest</filter-name>
    		<url-pattern>/*</url-pattern>
    		<dispatcher>FORWARD</dispatcher>
    		<dispatcher>REQUEST</dispatcher>
    		<dispatcher>ERROR</dispatcher>
    	</filter-mapping>
    	<filter-mapping>
    		<filter-name>springSecurityFilterChain</filter-name>
    		<url-pattern>/*</url-pattern>
    		<dispatcher>ERROR</dispatcher>
    		<dispatcher>FORWARD</dispatcher>
    		<dispatcher>REQUEST</dispatcher>
    	</filter-mapping>
    	<filter-mapping>
    		<filter-name>sitemesh</filter-name>
    		<url-pattern>/*</url-pattern>
    		<dispatcher>REQUEST</dispatcher>
    		<dispatcher>ERROR</dispatcher>
    	</filter-mapping>
    	<filter-mapping>
    		<filter-name>urlMapping</filter-name>
    		<url-pattern>/*</url-pattern>
    		<dispatcher>FORWARD</dispatcher>
    		<dispatcher>REQUEST</dispatcher>
    	</filter-mapping>
    	<listener>
    		<listener-class>org.codehaus.groovy.grails.plugins.log4j.web.util.Log4jConfigListener</listener-class>
    	</listener>
    	<listener>
    		<listener-class>org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener</listener-class>
    	</listener>
    	<listener>
    		<listener-class>net.sf.ehcache.constructs.web.ShutdownListener</listener-class>
    	</listener>
    	<servlet>
    		<servlet-name>grails</servlet-name>
    		<servlet-class>org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet</servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    	<servlet>
    		<servlet-name>gsp</servlet-name>
    		<servlet-class>org.codehaus.groovy.grails.web.pages.GroovyPagesServlet</servlet-class>
    	</servlet>
    	<servlet>
    		<servlet-name>grails-errorhandler</servlet-name>
    		<servlet-class>org.codehaus.groovy.grails.web.servlet.ErrorHandlingServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>gsp</servlet-name>
    		<url-pattern>*.gsp</url-pattern>
    	</servlet-mapping>
    	<servlet-mapping>
    		<servlet-name>grails-errorhandler</servlet-name>
    		<url-pattern>/grails-errorhandler</url-pattern>
    	</servlet-mapping>
    	<servlet-mapping>
    		<servlet-name>grails</servlet-name>
    		<url-pattern>*.dispatch</url-pattern>
    	</servlet-mapping>
    	<welcome-file-list>
    		<welcome-file>index.html</welcome-file>
    		<welcome-file>index.jsp</welcome-file>
    		<welcome-file>index.gsp</welcome-file>
    	</welcome-file-list>
    	<error-page>
    		<error-code>500</error-code>
    		<location>/grails-errorhandler</location>
    	</error-page>
    	<jsp-config>
    		<taglib>
    			<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
    			<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
    		</taglib>
    		<taglib>
    			<taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
    			<taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
    		</taglib>
    		<taglib>
    			<taglib-uri>http://www.springframework.org/tags</taglib-uri>
    			<taglib-location>/WEB-INF/tld/spring.tld</taglib-location>
    		</taglib>
    		<taglib>
    			<taglib-uri>http://grails.codehaus.org/tags</taglib-uri>
    			<taglib-location>/WEB-INF/tld/grails.tld</taglib-location>
    		</taglib>
    	</jsp-config>
    </web-app>
    bean configuration in grails
    Code:
    ...
    	cacheManager(org.springframework.cache.ehcache.EhCacheManagerFactoryBean) {
    		cacheManagerName = 'Default Cache Manager'
    	}
    	
    	defaultCache(org.springframework.cache.ehcache.EhCacheFactoryBean) {
    		cacheManager = cacheManager
    		cacheName = "grails.plugin.persistent_cache.default"
    	}
    ...
    Last edited by mminella; Mar 1st, 2012 at 12:31 PM.
    Michael Minella
    Spring Batch Lead
    Author - Pro Spring Batch
    http://www.michaelminella.com
    Twitter: @MichaelMinella

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •