[Building Sakai] cache settings in webapp applicationcontext are not working

Steve Swinsburg steve.swinsburg at gmail.com
Mon Jun 27 19:11:11 PDT 2011


This is now working.

Using the guide here I was able to inject a fully configured cache into my app from my webapp's applicationContext.

https://confluence.sakaiproject.org/display/SAKDEV/Using+Caching+in+Sakai

I was getting mixed up with some old cache code that uses the MemoryService Cache as the approaches are quite dissimilar.

cheers,
S


On 28/06/2011, at 10:38 AM, Steve Swinsburg wrote:

> Hi Earle,
> 
> In doing some tests, I added a second cache config to my applicationContext.xml and it registered with the correct settings. So it looks like my code was overwriting the configured cache with the default settings when it created the new cache:
> public void init() {
> 	cache = memoryService.newCache(CACHE_NAME);
> }
> 
> However that is exactly the same code I am using in Profile2 and it works.
> 
> It looks like we can just inject the configured cache into the app, as per:
> https://confluence.sakaiproject.org/display/SAKDEV/Using+Caching+in+Sakai
> 
> The subtleties!
> 
> cheers,
> Steve
> 
> On 28/06/2011, at 6:57 AM, Earle Nietzel wrote:
> 
>> Hi Steve,
>> 
>> Maybe because your using the same EhCacheManagerFactoryBean you need
>> to add the cache my_cache_name to the ehcache.xml that it was
>> configured with. The reason for this I am guessing is that it looks
>> for a configuration for <cache name="my_cache_name"> but since it
>> doesn't find it, it will use the default.
>> 
>> <cache name="my_cache_name"
>>        maxElementsInMemory="1000"
>>        eternal="false"
>>        timeToIdleSeconds="43200"
>>        timeToLiveSeconds="43200"
>>        overflowToDisk="false"
>>        />
>> 
>> <bean id="methodCache"
>> class="org.springframework.cache.ehcache.EhCacheFactoryBean">
>>  <property name="cacheManager">
>>    <ref local="cacheManager"/>
>>  </property>
>>  <property name="cacheName">
>>    <value>my_cache_name</value>
>>  </property>
>> </bean>
>> 
>> Maybe this is a side affect of the version of spring we are on?
>> 
>> I am not saying sakai needs a newer version of spring but when people
>> want to use current features of a framework and then find out that
>> Sakai is using an older version of that framework it kind of sucks!
>> 
>> I also think the points Aaron brought are valid but you can't stay on
>> an old version if you intend to attract new people. For example
>> cacheing in spring 3 via annotations has some nice features:
>> 
>> http://viralpatel.net/blogs/2011/02/cache-support-spring-3-1-m1.html
>> 
>> Earle
>> 
>> 
>> Earle
>> 
>> On Sun, Jun 26, 2011 at 11:50 PM, Steve Swinsburg
>> <steve.swinsburg at gmail.com> wrote:
>>> 
>>> Now that the conference is over, does anyone have input on the behaviour I'm seeing below?
>>> We have some cache wiring in our webapp setup to use the org.sakaiproject.MemoryService, but it's not using any of the settings I define, only the cache name itself.
>>> Any input would be appreciated.
>>> thanks,
>>> Steve
>>> 
>>> On 07/06/2011, at 4:58 PM, Steve Swinsburg wrote:
>>> 
>>> Hi all,
>>> I have a standalone webapp (no component, API etc) and am leveraging the Sakai MemoryService to add a cache into my app. The cache itself is working fine but the settings I define in my application context are not. In my application context I have:
>>> <!-- cache: ttl=12 hours -->
>>>     <bean id="my_bean_id"
>>>         class="org.springframework.cache.ehcache.EhCacheFactoryBean">
>>>         <property name="cacheManager">
>>>             <ref bean="org.sakaiproject.memory.api.MemoryService.cacheManager"/>
>>>         </property>
>>>         <property name="cacheName">
>>>             <value>my_cache_name</value>
>>>         </property>
>>>         <property name="maxElementsInMemory" value="1000" />
>>>         <property name="diskPersistent" value="false" />
>>>         <property name="eternal" value="false" />
>>>         <property name="timeToLive" value="43200" />
>>>         <property name="timeToIdle" value="43200" />
>>>     </bean>
>>> 
>>> ie it is setup with a TTL of 12 hours (43200 seconds).
>>> In the Memory tool within Sakai I see it registered ok, however the TTL is back to the default of 5 minutes:
>>> [ name = my_cache_name status = STATUS_ALIVE eternal = false overflowToDisk = false maxElementsInMemory = 10000 maxElementsOnDisk = 0 memoryStoreEvictionPolicy = LRU timeToLiveSeconds = 300 timeToIdleSeconds = 300 diskPersistent = false diskExpiryThreadIntervalSeconds = 120 cacheEventListeners: hitCount = 8 memoryStoreHitCount = 8 diskStoreHitCount = 0 missCountNotFound = 1 missCountExpired = 1 ]
>>> Is it not possible to override the cache settings via my webapp's spring wiring?
>>> In Profile2 the cache setup is done in the component and it works  so I'm thinking its only when the setup happens in the webapp. Can anyone confirm?
>>> cheers,
>>> Steve
>>> 
>>> _______________________________________________
>>> sakai-dev mailing list
>>> sakai-dev at collab.sakaiproject.org
>>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>> 
>>> TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of "unsubscribe"
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20110628/f79842b1/attachment.html 


More information about the sakai-dev mailing list