[prev in list] [next in list] [prev in thread] [next in thread] 

List:       jboss-user
Subject:    [jboss-user] [JBoss Cache] New message: "Jboss cache
From:       Frank Cheng <do-not-reply () jboss ! com>
Date:       2010-01-29 21:19:00
Message-ID: 901846946.450041264799940551.JavaMail.jboss () clearspace02 ! app ! mwc ! hst ! phx2 ! redhat ! com
[Download RAW message or body]

User development,

A new message was posted in the thread "Jboss cache TransactionCompletedEvent in \
Jboss AS 5.1":

http://community.jboss.org/message/523069#523069

Author  : Frank Cheng
Profile : http://community.jboss.org/people/chengsuntx

Message:
--------------------------------------------------------------
I am trying to add transaction support to Jboss Cache. The TransactionComplted \
listener got hit when the transaction was commited or whenever a read happened to the \
cache. The cache root in TransactionCompletedEvent is always null.

Here is the code I am using:

@CacheListener
public class JbossCacheListener {
       private static Log logger = LogFactory.getLog(JbossCacheListener.class);
       public static String DEFAULT_CONFIC_CACHE_NAME = "config-default-name";
       
       private InitialContext context;
       private Cache cache;
       private TransactionManager transMgr;
       
       public boolean init(){
               try {
                       this.context = new InitialContext();
                       CacheManager cacheManager = \
                (CacheManager)context.lookup("java:CacheManager");
                       cache = cacheManager.getCache(DEFAULT_CONFIC_CACHE_NAME, \
true);  if (cache == null) {
                               logger.error("Unable to find cache " + \
DEFAULT_CONFIC_CACHE_NAME + ", jboss cache isn't configured properly.");  return \
false;  }
                       cache.start();
                       cache.addCacheListener(this);

                       GenericTransactionManagerLookup tranLookup = new \
GenericTransactionManagerLookup();  transMgr = tranLookup.getTransactionManager();
               } catch (NamingException e1) {
                       logger.error("unable to find initial context by naming \
service; " + e1);  return false;
               } catch (Exception e) {
                       logger.error("unable to find initial context by naming \
service; " + e);  return false;
               }


               try {
                       transMgr.begin();
                       loadConfig();   // load data to the cache through bunch of \
puts  transMgr.commit();
               } catch (Exception e) {
                       try { transMgr.rollback(); } catch(Throwable t) {}
                       logger.error("Unable to load cluster configuration; " + e);
                       return false;
               }


               return true;
       }
       
       @TransactionCompleted
       public void perform(TransactionCompletedEvent te)
       {
               logger.info("An trans complete event " + te.getType() + " \
isOriginLocal " + te.isOriginLocal() + " isSuccessful " + te.isSuccessful() + " has \
occured");  if (te.getCache().getRoot() == null) {
                       logger.info("cache root is null from TransactionCompletedEvent \
after complete.");  return;
               }
               logger.info("transEvent: " + te.getTransaction().toString());
       }
       
       private void loadConfig() {
               Node rootNode = cache.getRoot();
               Node personRecordsNode = \
rootNode.addChild(Fqn.fromString("/org/mycompany/personRecords"));           \
personRecordsNode.put("name", "Peter");  personRecordsNode.put("address", "1 main \
st");  }}

And here is some of the configuration properties.

                 <property \
name="transactionManagerLookupClass">org.jboss.cache.transaction.GenericTransactionManagerLookup</property>
  <property name="nodeLockingScheme">OPTIMISTIC</property>
                 <property name="useLockStriping">false</property>
                 <property name="cacheMode">REPL_ASYNC</property> 


Perform function gots called and te.getCache().getRoot() is null. And also, perform \
gots call whenerver a read happened on any of the nodes in the cache and \
te.getCache().getRoot() is null.

Any idea on this? Thanks in advance.


--------------------------------------------------------------

To reply to this message visit the message page: \
http://community.jboss.org/message/523069#523069



_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic