[jboss-user] [JBoss Cache Users] - transaction failed to rollback
sridhar_ratna
do-not-reply at jboss.com
Wed Sep 16 05:34:13 EDT 2009
Hi,
I am using jboss cahe 3.1 core and using jbdm as persistent storage and jboss jta 4.1 as transaction manager.
Problem is even if i say rollback(0 it didnt have any effect.
Simmple code i have written as
|
| package com.test;
|
| import javax.transaction.NotSupportedException;
| import javax.transaction.SystemException;
|
| import org.jboss.cache.Cache;
| import org.jboss.cache.CacheFactory;
| import org.jboss.cache.DefaultCacheFactory;
| import org.jboss.cache.Fqn;
| import org.jboss.cache.Node;
| import org.jboss.cache.transaction.JBossStandaloneJTAManagerLookup;
|
| import com.arjuna.ats.jta.TransactionManager;
|
| public class CacheMgr {
|
| public String CACHE_CFG_PATH = "src/jboss-cache.xml";
| /** JBoss Cache instance. */
| private Cache<Long, Object> cache = null;
| JBossStandaloneJTAManagerLookup jtaLookupMgr = null;
| javax.transaction.TransactionManager txnManager = null;
| /** Singleton instance. */
| private static CacheMgr instance = null;
|
| public static CacheMgr getInstance() {
| if (instance == null) {
| instance = new CacheMgr();
| }
| return instance;
| }
|
| public void start() {
| try {
| CacheFactory<Long, Object> factory = new DefaultCacheFactory<Long, Object>();
| cache = factory.createCache(CACHE_CFG_PATH);
|
| cache.getConfiguration().getRuntimeConfig().setTransactionManager(TransactionManager.transactionManager());
|
| cache.create();
| cache.start();
|
| System.out.println(cache.getConfiguration().getRuntimeConfig().getTransactionManager());
| } catch (Exception e) {
| e.printStackTrace();
| }
| }
|
| public void stop() {
| if (cache != null) {
| cache.stop();
| }
| }
|
| public Cache<Long, Object> getCache() {
| return cache;
| }
|
| private Node<Long, Object> createCollectionNode(String collectionPath,
| final Node<Long, Object> rootNode) {
| Fqn<String> fqn = null;
| Node<Long, Object> collectionNode = rootNode;
|
| final String[] pathElements = collectionPath.substring(0).split("/");
| for (String pathElement : pathElements) {
| fqn = Fqn.fromString("/" + pathElement);
| if (collectionNode.hasChild(fqn))
| collectionNode = collectionNode.getChild(fqn);
| else {
| collectionNode = collectionNode.addChild(fqn);
| }
| }
| return collectionNode;
| }
|
|
| public static void main(String[] args) {
|
| CacheMgr mgr = CacheMgr.getInstance();
| mgr.start();
|
| Cache<Long, Object> cache = mgr.getCache();
| try {
|
| javax.transaction.TransactionManager tx = cache.getConfiguration().getRuntimeConfig().getTransactionManager();
| tx.begin();
| mgr.createCollectionNode("/test/sridhar", cache.getRoot());
| tx.rollback();
| } catch (NotSupportedException e) {
| e.printStackTrace();
| } catch (SystemException e) {
| e.printStackTrace();
| } catch (SecurityException e) {
| e.printStackTrace();
| } catch (IllegalStateException e) {
| e.printStackTrace();
| } /*catch (RollbackException e) {
| e.printStackTrace();
| } catch (HeuristicMixedException e) {
| e.printStackTrace();
| } catch (HeuristicRollbackException e) {
| e.printStackTrace();
| }*/
|
|
| }
| }
|
|
and my config file as
<?xml version="1.0" encoding="UTF-8"?>
| <jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
| xmlns="urn:jboss:jbosscache-core:config:3.1">
| <transaction
| transactionManagerLookupClass="org.jboss.cache.transaction.GenericTransactionManagerLookup"
| syncRollbackPhase="true" syncCommitPhase="true" />
| <locking isolationLevel="REPEATABLE_READ"
| lockParentForChildInsertRemove="false" lockAcquisitionTimeout="200000"
| nodeLockingScheme="mvcc" writeSkewCheck="false" useLockStriping="false"
| concurrencyLevel="500" />
| <jmxStatistics enabled="true" />
| <loaders passivation="false" shared="false">
| <preload>
| <node fqn="/" />
| </preload>
| <loader class="org.jboss.cache.loader.jdbm.JdbmCacheLoader"
| async="false" fetchPersistentState="true" ignoreModifications="false">
| <properties>
| location=D:\\cache1
| </properties>
| </loader>
| </loaders>
| </jbosscache>
What is the problem. Where i did the mistake.
The same problem even when i replaced code line
cache.getConfiguration().getRuntimeConfig().setTransactionManager(TransactionManager.transactionManager());
|
with
jtaLookupMgr = new JBossStandaloneJTAManagerLookup();
| cache.getConfiguration().getRuntimeConfig().setTransactionManager(jtaLookupMgr.getTransactionManager());
|
Thanks,
Sridhar
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4255479#4255479
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4255479
More information about the jboss-user
mailing list