[jboss-user] [JBossCache] - Re: TreeCache CacheLoader Issue

robnor do-not-reply at jboss.com
Tue May 8 06:32:29 EDT 2007


My current workaround:


  |  public static void storeTracker(ImportTracker tracker)
  |   {
  |     logDebug("storeTracker() - start");
  |     
  |     try
  |     {
  |       if (useTreeCache)
  |       { 
  |         logDebug("ImportTracker - PUT");
  |         boolean transactionActive = false;
  |         try
  |         {
  |           TreeCacheMBean cache = CacheHelper.getImportCache();
  |           Transaction trans = CacheHelper.getImportCache().getTransactionManager().getTransaction();
  |           if (trans != null)
  |           {
  |             logDebug("TRANSACTION STATUS: " + getTransactionStatusString(trans.getStatus()));
  |             if (trans.getStatus() != Status.STATUS_COMMITTED)
  |             {
  |               transactionActive = true;
  |             }
  |           }
  |           else
  |           {
  |             logDebug("NO TRANSACTION");
  |             transactionActive = false;
  |           }
  |         }
  |         catch (SystemException ex)
  |         {
  |           slog.error("Transaction Error!", ex);
  |         }
  |         
  |         CacheHelper.getImportCache().get(nodename).put("importTracker", tracker);
  |         
  |         
  |         Fqn fqn = CacheHelper.getImportCache().get(nodename).getFqn();        
  |         try
  |         {
  |           ImportTracker tr  = (ImportTracker) CacheHelper.getImportCache().get(fqn, "importTracker");
  |           ImportTracker tr2 = (ImportTracker) CacheHelper.getImportCache().getCacheLoader().get(fqn).get("importTracker"); 
  |           if (tracker.equals(tr))
  |           {
  |             logDebug("Tracker objects are EQUAL");
  |           }
  |           else
  |           {
  |             logDebug("Tracker object are NOT EQUAL");
  |             logDebug("Putting updated Tracker hard in cacheloader");
  |             if (!transactionActive)
  |             {
  |               CacheHelper.getImportCache().getInstance().getCacheLoader().put(fqn, "importTracker", tracker);
  |               logDebug("Done!");
  |             }
  |           }
  |           logDebug("COMPARING WITH Tracker received from cacheloader");
  |           if (tracker.equals(tr2))
  |           {
  |             logDebug("Tracker objects are EQUAL");
  |           }
  |           else
  |           {
  |             logDebug("Tracker object are NOT EQUAL");
  |             logDebug("Putting updated Tracker hard in cacheloader");
  |             if (!transactionActive)
  |             {
  |               CacheHelper.getImportCache().getInstance().getCacheLoader().put(fqn, "importTracker", tracker);
  |               logDebug("Done!");
  |             }
  |           }
  |           
  | 
  |         }
  |         catch (Exception ex)
  |         {
  |           ex.printStackTrace();
  |         }        
  |         logDebug("PUT - Performed!");
  |       }
  |       else
  |       {
  |         // === this should not be necessary as aop detects setting on methods ===
  |         CacheHelper.getImportPojoCache().putObject(nodename, tracker);        
  |       }
  |     }
  |     catch (CacheException ex)
  |     {
  |       slog.error("Failed to store importtracker in cache", ex);
  |     }
  |     logDebug("storeTracker() - stop");
  | 
  |   }
  |   
  | 
  |   public static ImportTracker getTracker()
  |   {
  |     ImportTracker retval = null;    
  |     if (useTreeCache)
  |     {
  |       TreeCacheMBean cache = CacheHelper.getImportCache();
  |       
  |       if (!cache.exists(nodename, "importTracker"))
  |       {
  |         logDebug(nodename + "/importTracker does not exist, creating a new");
  |         ImportTracker tracker = new ImportTracker();
  |         try
  |         {
  |           cache.put(nodename, "importTracker", tracker);
  |           retval = (ImportTracker) cache.get(nodename).get("importTracker");
  |         }
  |         catch (CacheException e)
  |         {
  |           slog.error("Failed to retrieve ImportTracker", e);
  |         }
  |       }
  |       else
  |       {
  |         try
  |         {
  |           retval = (ImportTracker) cache.get(nodename).get("importTracker");
  |         }
  |         catch (CacheException e)
  |         {
  |           slog.error(e);
  |         }
  |       }
  |     }
  |     else
  |     {
  |       PojoCacheMBean cache = CacheHelper.getImportPojoCache();
  | 
  |       if (!cache.exists(nodename, "importTracker"))
  |       {
  |         slog.debug(nodename + "/importTracker does not exist, creating a new");
  |         ImportTracker tracker = new ImportTracker();
  |         try
  |         {
  |           cache.putObject(nodename, tracker);
  |           retval = (ImportTracker) cache.getObject(nodename);
  |         }
  |         catch (CacheException e)
  |         {
  |           slog.error("Failed to create ImportTracker", e);
  |         }
  |       }
  |       else
  |       {
  |         try
  |         {
  |           retval = (ImportTracker) cache.getObject(nodename);
  |         }
  |         catch (CacheException e)
  |         {
  |           slog.error(e);
  |         }
  |       }
  |     }
  |     return retval;
  |   }
  | 
  | 

plese dont look at the pojocahce stuff, it will not be used atm

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

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



More information about the jboss-user mailing list