Package org.jboss.tm

Examples of org.jboss.tm.TransactionLocal


            if(!isInterleaving())
            {
              cl.setTrackByTx(true);
              InternalManagedConnectionPool imcp = (InternalManagedConnectionPool)cl.getContext();
              JBossManagedConnectionPool.SubPoolContext subPool = imcp.getSubPoolContext();
              TransactionLocal trackByTx = subPool.getTrackByTx();
              try
              {
                trackByTx.lock();
              }
              catch (Throwable t)
                {
                rethrowAsSystemException("Unable to begin transaction with JCA lazy enlistment scenario", trackByTx.getTransaction(), t);
                }             
              try
              {
                trackByTx.set(cl);
              }
              finally
              {
                trackByTx.unlock();
              }
            }
         }
      }
   }
View Full Code Here


   protected Synchronization ccmSynch;

   /** Initialization */
   public static void setTransactionManager(TransactionManager tm)
   {
      txSynchs = new TransactionLocal(tm);
   }
View Full Code Here

      public SubPoolContext(TransactionManager tm, ManagedConnectionFactory mcf, ConnectionListenerFactory clf, Subject subject,
                            ConnectionRequestInfo cri, PoolParams poolParams, JBossManagedConnectionPool jmcp, Logger log)
      {
         subPool = new InternalManagedConnectionPool(mcf, clf, subject, cri, poolParams, jmcp, this, log);
         if (tm != null)
            trackByTx = new TransactionLocal(tm);
      }
View Full Code Here

         SubPoolContext subPool = getSubPool(key, subject, cri);
        
         InternalManagedConnectionPool mcp = subPool.getSubPool();
        
         // Are we doing track by connection?
         TransactionLocal trackByTx = subPool.getTrackByTx();

         // Simple case
         if (trackByTransaction == null || trackByTx == null)
         {
            try
            {
               ConnectionListener cl = mcp.getConnection(subject, cri);
               if (traceEnabled)
                  dump("Got connection from pool " + cl);
               return cl;
            }
            catch (RetryableResourceException rre)
            {
               if (log.isDebugEnabled())
                  log.debug("Got a RetryableResourceException - trying to reinitialize the pool");

               // The IMCP is down - retry
               subPool = getSubPool(key, subject, cri);
               mcp = subPool.getSubPool();

               // Make sure that IMCP is running
               if (!mcp.isRunning())
                  mcp.initialize();

               ConnectionListener cl = mcp.getConnection(subject, cri);
               if (traceEnabled)
                  dump("Got connection from pool (retried) " + cl);

               return cl;
            }
         }

         // Track by transaction
         try
         {
            trackByTx.lock(trackByTransaction);
         }
         catch (Throwable t)
         {
            JBossResourceException.rethrowAsResourceException("Unable to get connection from the pool for tx=" + trackByTransaction, t);
         }
         try
         {
            // Already got one
            ConnectionListener cl = (ConnectionListener) trackByTx.get(trackByTransaction);
            if (cl != null)
            {
               if (traceEnabled)
                  dump("Previous connection tracked by transaction " + cl + " tx=" + trackByTransaction);
               return cl;
            }
         }
         finally
         {
            trackByTx.unlock(trackByTransaction);
         }

         // Need a new one for this transaction
         // This must be done outside the tx local lock, otherwise
         // the tx timeout won't work and get connection can do a lot of other work
         // with many opportunities for deadlocks.
         // Instead we do a double check after we got the transaction to see
         // whether another thread beat us to the punch.
         ConnectionListener cl = mcp.getConnection(subject, cri);
         if (traceEnabled)
            dump("Got connection from pool tracked by transaction " + cl + " tx=" + trackByTransaction);
        
         // Relock and check/set status
         try
         {
            trackByTx.lock(trackByTransaction);
         }
         catch (Throwable t)
         {
            mcp.returnConnection(cl, false);
            if (traceEnabled)
               dump("Had to return connection tracked by transaction " + cl + " tx=" + trackByTransaction + " error=" + t.getMessage());
            JBossResourceException.rethrowAsResourceException("Unable to get connection from the pool for tx=" + trackByTransaction, t);
         }
         try
         {
            // Check we weren't racing with another transaction
            ConnectionListener other = (ConnectionListener) trackByTx.get(trackByTransaction);
            if (other != null)
            {
               mcp.returnConnection(cl, false);
               if (traceEnabled)
                  dump("Another thread already got a connection tracked by transaction " + other + " tx=" + trackByTransaction);
               return other;
            }
           
            // This is the connection for this transaction
            cl.setTrackByTx(true);
            trackByTx.set(cl);
            if (traceEnabled)
               dump("Using connection from pool tracked by transaction " + cl + " tx=" + trackByTransaction);
            return cl;
         }
         finally
         {
            trackByTx.unlock(trackByTransaction);
         }
      }
View Full Code Here

      }
      catch (Exception ex)
      {
         throw new RuntimeException(ex);
      }
      this.txState = new TransactionLocal();
      this.txVersion = new TransactionLocal();
      this.methodMap = mapMethodMap;
   }
View Full Code Here

      }
      catch (Exception ex)
      {
         throw new RuntimeException(ex);
      }
      this.txState = new TransactionLocal();
      this.txVersion = new TransactionLocal();
      this.methodMap = listMethodMap;
   }
View Full Code Here

      }
      catch (Exception ex)
      {
         throw new RuntimeException(ex);
      }
      this.txState = new TransactionLocal();
      this.txVersion = new TransactionLocal();
      this.methodMap = setMethodMap;
   }
View Full Code Here

      tm = TransactionManagerLocator.getInstance().locate();
   }
  
   public void testSimpleSetGet() throws Exception
   {
      TransactionLocal local = new TransactionLocal(tm);
      tm.begin();
      try
      {
         local.set("Simple");
         assertEquals("Simple", local.get());
      }
      finally
      {
         tm.commit();
      }
View Full Code Here

      }
   }
  
   public void testSimpleSetNull() throws Exception
   {
      TransactionLocal local = new TransactionLocal(tm);
      tm.begin();
      try
      {
         local.set(null);
      }
      finally
      {
         tm.commit();
      }
View Full Code Here

      }
   }
  
   public void testSimpleGetWithNoInitial() throws Exception
   {
      TransactionLocal local = new TransactionLocal(tm);
      tm.begin();
      try
      {
         assertEquals(null, local.get());
      }
      finally
      {
         tm.commit();
      }
View Full Code Here

TOP

Related Classes of org.jboss.tm.TransactionLocal

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.