[jboss-user] [JBossCache] - Manual eviction not working

dmary do-not-reply at jboss.com
Tue Feb 12 12:54:26 EST 2008


Hi all,

I'm trying to evict manualy all nodes from memory cache to cache loader (mysql datastore).
I'm doing this as I want to keep data from cache even if I shutdown JBoss server, so I want to store physicaly datas , and when I start Jboss another time, it will bring up all datas from cacheloader.

This is the code :
public void backupAllCache() {
  |     this.log.info("launching backup cache");
  |     Fqn fqn = Fqn.fromString("/root/");
  |     try {
  |       Node root = this.cache.get(new Fqn(fqn, "smu"));
  |       Map childs = root.getChildren();
  |       Set keys = childs.keySet();
  |       for (Iterator iterator = keys.iterator(); iterator.hasNext();) {
  |         Object object = (Object) iterator.next();
  |         String k = (String)object;
  |         Node child = (Node)childs.get(k);
  |         this.cache.evict(child.getFqn());
  |       }
  |     } catch (CacheException e) {
  |       e.printStackTrace();
  |     }
  |     catch (Exception e) {
  |       e.printStackTrace();
  |     }
  |   }

The nodes are deleted from memory but doesn't go to cache loader.

Here is my config cache :
<?xml version="1.0" encoding="UTF-8" ?>
  | <server>
  |   <classpath codebase="./lib" archives="jboss-cache.jar, jgroups.jar" />
  |   <mbean code="org.jboss.cache.aop.PojoCache" name="jboss.cache:service=PojoCache">
  |     <depends>jboss:service=Naming</depends>
  |     <depends>jboss:service=TransactionManager</depends>
  |     <depends>jboss.jca:service=DataSourceBinding,name=my-ds</depends>
  | 
  |     <attribute name="TransactionManagerLookupClass">org.jboss.cache.JBossTransactionManagerLookup</attribute>
  | 	<attribute name="NodeLockingScheme">PESSIMISTIC</attribute>		
  |     <attribute name="IsolationLevel">REPEATABLE_READ</attribute>
  | 
  |     <attribute name="CacheMode">LOCAL</attribute>
  | 
  |     <attribute name="LockAcquisitionTimeout">15000</attribute>
  | <attribute name="EvictionPolicyClass">org.jboss.cache.aop.eviction.AopLRUPolicy</attribute> 
  |         <attribute name="EvictionPolicyConfig">
  |            <config>
  |               <attribute name="wakeUpIntervalSeconds">2</attribute> 
  |               <!-- Cache wide default -->
  |               <region name="/_default_">
  |                   <attribute name="maxNodes">100000</attribute>
  |                   <attribute name="timeToLiveSeconds">0</attribute>
  |               </region>
  |               <region name="/root/smu">
  |                   <attribute name="maxNodes">100000</attribute>
  |                   <attribute name="timeToLiveSeconds">0</attribute>
  |               </region>               
  |            </config>
  |         </attribute>
  | 	<attribute name="CacheLoaderConfiguration">
  | 	    <config>
  | 	        <passivation>true</passivation>
  | 	        <shared>false</shared>
  | 		<preload></preload>
  | 	        <cacheloader>
  | 	                    <class>org.jboss.cache.loader.JDBCCacheLoader</class>
  | 	                    <properties>
  | 	                        cache.jdbc.datasource=java:/my-ds
  | 				cache.jdbc.table.drop=false
  | 	                    </properties>
  | 	                    <async>false</async>
  | 	                    <fetchPersistentState>true</fetchPersistentState>
  | 	                    <ignoreModifications>false</ignoreModifications>
  | 	                </cacheloader>
  | 	    </config>
  | 	</attribute>
  |   </mbean>
  | </server> 

So, to conclude, if anybody knows why this manual evicting is not working ??

Otherelse, If somebody knows also a simpliest way to evict automaticly all nodes from memory to cacheloader when Jboss shutdown ????
Thanks all!


ps : I use Jboss 4.05GA and JbossCache 1.4.1 SP3.

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4128885#4128885

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4128885



More information about the jboss-user mailing list