[jboss-svn-commits] JBL Code SVN: r28856 - in labs/jbosstm/trunk: ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator and 7 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Aug 6 09:23:10 EDT 2009


Author: jhalliday
Date: 2009-08-06 09:23:09 -0400 (Thu, 06 Aug 2009)
New Revision: 28856

Added:
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TxStatsMBean.java
Modified:
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBean.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoreEnvironmentBean.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/ObjectStoreEnvironmentBean.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/RecoveryEnvironmentBean.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/BasicAction.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TransactionReaper.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TwoPhaseCoordinator.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TxControl.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TxStats.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/classes/com/arjuna/ats/tsmx/mbeans/PerformanceStatistics.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/classes/com/arjuna/ats/tsmx/mbeans/PerformanceStatisticsMBean.java
   labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common/TxojEnvironmentBean.java
   labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/common/JDBCEnvironmentBean.java
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBean.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/TransactionFactoryImple.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/JTSEnvironmentBean.java
   labs/jbosstm/trunk/ArjunaJTS/orbportability/classes/com/arjuna/orbportability/common/OrbPortabilityEnvironmentBean.java
Log:
Further beanification, mainly the transaction statistics. JBTM-596


Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBean.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoordinatorEnvironmentBean.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -31,7 +31,7 @@
  * @author Jonathan Halliday (jonathan.halliday at redhat.com)
  */
 @PropertyPrefix(prefix = "com.arjuna.ats.arjuna.coordinator.")
-public class CoordinatorEnvironmentBean
+public class CoordinatorEnvironmentBean implements CoordinatorEnvironmentBeanMBean
 {
     private String actionStore = ArjunaNames.Implementation_ObjectStore_defaultActionStore().stringForm();
     private boolean asyncCommit = false;

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoreEnvironmentBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoreEnvironmentBean.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoreEnvironmentBean.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -30,7 +30,7 @@
  * @author Jonathan Halliday (jonathan.halliday at redhat.com)
  */
 @PropertyPrefix(prefix = "com.arjuna.ats.arjuna.")
-public class CoreEnvironmentBean
+public class CoreEnvironmentBean implements CoreEnvironmentBeanMBean
 {
     @FullPropertyName(name = "com.arjuna.ats.arjuna.common.propertiesFile")
     private String propertiesFile = "";

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/ObjectStoreEnvironmentBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/ObjectStoreEnvironmentBean.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/ObjectStoreEnvironmentBean.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -34,7 +34,7 @@
  * @author Jonathan Halliday (jonathan.halliday at redhat.com)
  */
 @PropertyPrefix(prefix = "com.arjuna.ats.arjuna.objectstore.")
-public class ObjectStoreEnvironmentBean
+public class ObjectStoreEnvironmentBean implements ObjectStoreEnvironmentBeanMBean
 {
     private String localOSRoot = "defaultStore";
     private String objectStoreDir = System.getProperty("user.dir") + File.separator + "ObjectStore";

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/RecoveryEnvironmentBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/RecoveryEnvironmentBean.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/RecoveryEnvironmentBean.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -25,13 +25,15 @@
 import com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery;
 import com.arjuna.ats.arjuna.utils.Utility;
 
+import java.net.InetAddress;
+
 /**
  * A JavaBean containing configuration properties for the recovery system.
  *
  * @author Jonathan Halliday (jonathan.halliday at redhat.com)
  */
 @PropertyPrefix(prefix = "com.arjuna.ats.arjuna.recovery.")
-public class RecoveryEnvironmentBean
+public class RecoveryEnvironmentBean implements RecoveryEnvironmentBeanMBean
 {
     private int periodicRecoveryPeriod = PeriodicRecovery._defaultRecoveryPeriod;
     private int recoveryBackoffPeriod = PeriodicRecovery._defaultBackoffPeriod;
@@ -103,6 +105,10 @@
         this.recoveryAddress = recoveryAddress;
     }
 
+    public void setRecoveryInetAddress(InetAddress inetAddress) {
+        setRecoveryAddress(inetAddress.getHostAddress());
+    }
+
 //    public static final String TRANSACTION_STATUS_MANAGER_PORT = "com.arjuna.ats.arjuna.recovery.transactionStatusManagerPort";
     public int getTransactionStatusManagerPort()
     {
@@ -126,6 +132,10 @@
         this.transactionStatusManagerAddress = transactionStatusManagerAddress;
     }
 
+    public void setTransactionStatusManagerInetAddress(InetAddress inetAddress) {
+        setTransactionStatusManagerAddress(inetAddress.getHostAddress());
+    }
+
 //    public static final String EXPIRY_SCAN_INTERVAL    = "com.arjuna.ats.arjuna.recovery.expiryScanInterval";
     public int getExpiryScanInterval()
     {

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/BasicAction.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/BasicAction.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/BasicAction.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -1721,12 +1721,12 @@
 
 		        ActionManager.manager().put(this);
 
-		        if (TxControl.enableStatistics)
+		        if (TxStats.enabled())
 		        {
-		            TxStats.incrementTransactions();
+		            TxStats.getInstance().incrementTransactions();
 
 		            if (parentAct != null)
-		                TxStats.incrementNestedTransactions();
+		                TxStats.getInstance().incrementNestedTransactions();
 		        }
 		    }
 		}
@@ -1973,8 +1973,8 @@
 
 		actionStatus = ActionStatus.ABORTED;
 
-		if (TxControl.enableStatistics)
-			TxStats.incrementAbortedTransactions();
+		if (TxStats.enabled())
+			TxStats.getInstance().incrementAbortedTransactions();
 
 		return actionStatus;
 	}
@@ -2216,9 +2216,9 @@
             // ok count this as a commit unless we got a heuristic rollback in which case phase2Abort
             // will have been called and will already have counted it as an abort
             
-            if (TxControl.enableStatistics) {
+            if (TxStats.enabled()) {
                 if (heuristicDecision != TwoPhaseOutcome.HEURISTIC_ROLLBACK) {
-                    TxStats.incrementCommittedTransactions();
+                    TxStats.getInstance().incrementCommittedTransactions();
                 }
             }
 
@@ -2289,9 +2289,9 @@
 		 * rolling back because of a resource problem.
 		 */
 		
-		if (TxControl.enableStatistics) {
-            TxStats.incrementResourceRollbacks();
-            TxStats.incrementAbortedTransactions();
+		if (TxStats.enabled()) {
+            TxStats.getInstance().incrementResourceRollbacks();
+            TxStats.getInstance().incrementAbortedTransactions();
         }
     }
 
@@ -2791,11 +2791,11 @@
 		
 		criticalEnd();
 
-        if (TxControl.enableStatistics) {
+        if (TxStats.enabled()) {
             if (actionStatus == ActionStatus.ABORTED) {
-                TxStats.incrementAbortedTransactions();
+                TxStats.getInstance().incrementAbortedTransactions();
             } else {
-                TxStats.incrementCommittedTransactions();
+                TxStats.getInstance().incrementCommittedTransactions();
             }
         }
 
@@ -3488,8 +3488,8 @@
 			break;
 		}
 
-		if (TxControl.enableStatistics)
-			TxStats.incrementHeuristics();
+		if (TxStats.enabled())
+			TxStats.getInstance().incrementHeuristics();
 	}
 
 	protected void updateState ()

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TransactionReaper.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TransactionReaper.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TransactionReaper.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -565,10 +565,10 @@
 		        {
 		            cancelled = true;
 
-		            if (TxControl.enableStatistics) {
+		            if (TxStats.enabled()) {
 		                // note that we also count timeouts as application rollbacks via
 		                // the stats unpdate in the TwoPhaseCoordinator cancel() method.
-		                TxStats.incrementTimeouts();
+		                TxStats.getInstance().incrementTimeouts();
 		            }
 
 		            notifyListeners(e._control, true);

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TwoPhaseCoordinator.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TwoPhaseCoordinator.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TwoPhaseCoordinator.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -103,8 +103,8 @@
 
 	public int cancel ()
 	{
-		if (TxControl.enableStatistics)
-			TxStats.incrementApplicationRollbacks();
+		if (TxStats.enabled())
+			TxStats.getInstance().incrementApplicationRollbacks();
 
 		if (parent() != null)
 			parent().removeChildAction(this);

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TxControl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TxControl.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TxControl.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -313,8 +313,6 @@
 
 	static boolean readonlyOptimisation = true;
 
-	static boolean enableStatistics = false;
-
 	static boolean sharedTransactionLog = false;
 
 	static int numberOfTransactions = 100;
@@ -355,7 +353,6 @@
         onePhase = arjPropertyManager.getCoordinatorEnvironmentBean().isCommitOnePhase();
         asyncRollback = arjPropertyManager.getCoordinatorEnvironmentBean().isAsyncRollback();
         readonlyOptimisation = arjPropertyManager.getCoordinatorEnvironmentBean().isReadonlyOptimisation();
-        enableStatistics = arjPropertyManager.getCoordinatorEnvironmentBean().isEnableStatistics();
         enable = !arjPropertyManager.getCoordinatorEnvironmentBean().isStartDisabled();
         beforeCompletionWhenRollbackOnly = arjPropertyManager.getCoordinatorEnvironmentBean().isBeforeCompletionWhenRollbackOnly();
 

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TxStats.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TxStats.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TxStats.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -31,6 +31,10 @@
 
 package com.arjuna.ats.arjuna.coordinator;
 
+import com.arjuna.ats.arjuna.common.arjPropertyManager;
+
+import java.util.concurrent.atomic.AtomicLong;
+
 /**
  * This class is used to maintain statistics on transactions that have been
  * created. This includes the number of transactions, their termination status
@@ -41,75 +45,63 @@
  * @since JTS 2.1.
  */
 
-public class TxStats
+public class TxStats implements TxStatsMBean
 {
+    private static TxStats _instance = new TxStats();
 
-	/**
+    public static boolean enabled() {
+        return arjPropertyManager.getCoordinatorEnvironmentBean().isEnableStatistics();
+    }
+
+    public static TxStats getInstance() {
+        return _instance;
+    }
+
+    /**
 	 * @return the number of transactions (top-level and nested) created so far.
 	 */
-
-	public static int numberOfTransactions()
+	public long getNumberOfTransactions()
 	{
-		synchronized (_ntxLock)
-		{
-			return _numberOfTransactions;
-		}
+        return numberOfTransactions.longValue();
 	}
-
-	/**
+    
+    /**
 	 * @return the number of nested (sub) transactions created so far.
 	 */
-
-	public static int numberOfNestedTransactions()
+	public long getNumberOfNestedTransactions()
 	{
-		synchronized (_nntxLock)
-		{
-			return _numberOfNestedTransactions;
-		}
+        return numberOfNestedTransactions.longValue();
 	}
 
 	/**
 	 * @return the number of transactions which have terminated with heuristic
 	 *         outcomes.
 	 */
-
-	public static int numberOfHeuristics()
+	public long getNumberOfHeuristics()
 	{
-		synchronized (_nhLock)
-		{
-			return _numberOfHeuristics;
-		}
+        return numberOfHeuristics.get();
 	}
 
 	/**
 	 * @return the number of committed transactions.
 	 */
-
-	public static int numberOfCommittedTransactions()
+	public long getNumberOfCommittedTransactions()
 	{
-		synchronized (_ncmLock)
-		{
-			return _numberOfCommittedTransactions;
-		}
+        return numberOfCommittedTransactions.get();
 	}
 
 	/**
 	 * @return the total number of transactions which have rolled back.
 	 */
-
-	public static int numberOfAbortedTransactions()
+	public long getNumberOfAbortedTransactions()
 	{
-		synchronized (_nabLock)
-		{
-			return _numberOfAbortedTransactions;
-		}
+        return numberOfAbortedTransactions.get();
 	}
 	
 	/**
 	 * @return total number of inflight (active) transactions.
 	 */
-	
-	public static int numberOfInflightTransactions ()
+	public long getNumberOfInflightTransactions()
 	{
 		return ActionManager.manager().inflightTransactions().size();
 	}
@@ -117,37 +109,25 @@
 	/**
 	 * @return the number of transactions that have rolled back due to timeout.
 	 */
-	
-	public static int numberOfTimedOutTransactions ()
+	public long getNumberOfTimedOutTransactions()
 	{
-		synchronized (_notLock)
-		{
-			return _numberOfTimeouts;
-		}
+        return numberOfTimeouts.get();
 	}
 	
 	/**
 	 * @return the number of transactions that been rolled back by the application.
 	 */
-	
-	public static int numberOfApplicationRollbacks ()
+	public long getNumberOfApplicationRollbacks()
 	{
-		synchronized (_noaaLock)
-		{
-			return _numberOfApplicationAborts;
-		}
+        return numberOfApplicationAborts.get();
 	}
 	
 	/**
 	 * @return the number of transactions that have been rolled back by participants.
 	 */
-	
-	public static int numberOfResourceRollbacks ()
+	public long getNumberOfResourceRollbacks()
 	{
-		synchronized (_noraLock)
-		{
-			return _numberOfResourceAborts;
-		}
+        return numberOfResourceAborts.get();
 	}
 	
 	/**
@@ -156,108 +136,75 @@
 	 * @param pw the writer to use.
 	 */
 	
-	public static void printStatus(java.io.PrintWriter pw)
+	public void printStatus(java.io.PrintWriter pw)
 	{
 		pw.println("JBoss Transaction Service statistics.");
 		pw.println(java.util.Calendar.getInstance().getTime() + "\n");
 
-		pw.println("Number of created transactions: " + numberOfTransactions());
+		pw.println("Number of created transactions: " + getNumberOfTransactions());
 		pw.println("Number of nested transactions: "
-				+ numberOfNestedTransactions());
-		pw.println("Number of heuristics: " + numberOfHeuristics());
+				+ getNumberOfNestedTransactions());
+		pw.println("Number of heuristics: " + getNumberOfHeuristics());
 		pw.println("Number of committed transactions: "
-				+ numberOfCommittedTransactions());
+				+ getNumberOfCommittedTransactions());
 		pw.println("Number of rolled back transactions: "
-				+ numberOfAbortedTransactions());
+				+ getNumberOfAbortedTransactions());
 		pw.println("Number of inflight transactions: "
-				+ numberOfInflightTransactions());
+				+ getNumberOfInflightTransactions());
 		pw.println("Number of timed-out transactions: "
-				+ numberOfTimedOutTransactions());
+				+ getNumberOfTimedOutTransactions());
 		pw.println("Number of application rolled back transactions: "
-				+ numberOfApplicationRollbacks());
+				+ getNumberOfApplicationRollbacks());
 		pw.println("Number of resource rolled back transactions: "
-				+ numberOfResourceRollbacks());
+				+ getNumberOfResourceRollbacks());
 	}
 
-	static void incrementTransactions()
+	void incrementTransactions()
 	{
-		synchronized (_ntxLock)
-		{
-			_numberOfTransactions++;
-		}
+        numberOfTransactions.incrementAndGet();
 	}
 
-	static void incrementNestedTransactions()
+	void incrementNestedTransactions()
 	{
-		synchronized (_nntxLock)
-		{
-			_numberOfNestedTransactions++;
-		}
+        numberOfNestedTransactions.incrementAndGet();
 	}
 
-	static void incrementAbortedTransactions()
+	void incrementAbortedTransactions()
 	{
-		synchronized (_nabLock)
-		{
-			_numberOfAbortedTransactions++;
-		}
+        numberOfAbortedTransactions.incrementAndGet();
 	}
 
-	static void incrementCommittedTransactions()
+	void incrementCommittedTransactions()
 	{
-		synchronized (_ncmLock)
-		{
-			_numberOfCommittedTransactions++;
-		}
+        numberOfCommittedTransactions.incrementAndGet();
 	}
 
-	static void incrementHeuristics()
+	void incrementHeuristics()
 	{
-		synchronized (_nhLock)
-		{
-			_numberOfHeuristics++;
-		}
+        numberOfHeuristics.incrementAndGet();
 	}
 	
-	static void incrementTimeouts ()
+	void incrementTimeouts ()
 	{
-		synchronized (_notLock)
-		{
-			_numberOfTimeouts++;
-		}
+        numberOfTimeouts.incrementAndGet();
 	}
 
-	static void incrementApplicationRollbacks ()
+	void incrementApplicationRollbacks ()
 	{
-		synchronized (_noaaLock)
-		{
-			_numberOfApplicationAborts++;
-		}
+        numberOfApplicationAborts.incrementAndGet();
 	}
 	
-	static void incrementResourceRollbacks ()
+	void incrementResourceRollbacks ()
 	{
-		synchronized (_noraLock)
-		{
-			_numberOfResourceAborts++;
-		}
+        numberOfResourceAborts.incrementAndGet();
 	}
 	
-	private static int _numberOfTransactions = 0;
-	private static java.lang.Object _ntxLock = new Object();
-	private static int _numberOfNestedTransactions = 0;
-	private static java.lang.Object _nntxLock = new Object();
-	private static int _numberOfCommittedTransactions = 0;
-	private static java.lang.Object _ncmLock = new Object();
-	private static int _numberOfAbortedTransactions = 0;
-	private static java.lang.Object _nabLock = new Object();
-	private static int _numberOfHeuristics = 0;
-	private static java.lang.Object _nhLock = new Object();
-	private static int _numberOfTimeouts = 0;
-	private static final java.lang.Object _notLock = new Object();
-	private static int _numberOfApplicationAborts = 0;
-	private static final java.lang.Object _noaaLock = new Object();
-	private static int _numberOfResourceAborts = 0;
-	private static final java.lang.Object _noraLock = new Object();
-	
+	private AtomicLong numberOfTransactions = new AtomicLong(0);
+	private AtomicLong numberOfNestedTransactions = new AtomicLong(0);
+	private AtomicLong numberOfCommittedTransactions = new AtomicLong(0);
+	private AtomicLong numberOfAbortedTransactions = new AtomicLong(0);
+	private AtomicLong numberOfHeuristics = new AtomicLong(0);
+	private AtomicLong numberOfTimeouts = new AtomicLong(0);
+	private AtomicLong numberOfApplicationAborts = new AtomicLong(0);
+	private AtomicLong numberOfResourceAborts = new AtomicLong(0);
 }

Added: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TxStatsMBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TxStatsMBean.java	                        (rev 0)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TxStatsMBean.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -0,0 +1,87 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2009,
+ * @author JBoss, a division of Red Hat.
+ */
+package com.arjuna.ats.arjuna.coordinator;
+
+/**
+ * MBean interface for monitoring transaction statistics.
+ *
+ * @author Jonathan Halliday (jonathan.halliday at redhat.com)
+ */
+public interface TxStatsMBean
+{
+    /**
+     * Returns the total number of transactions (top-level and nested) created
+     * @return the total number of transactions created
+     */
+    long getNumberOfTransactions();
+
+    /**
+     * Returns the total number of nested (sub) transactions created.
+     * Note: in JTA environments will normally be 0, since JTA disallows nested tx by default.
+     * @return the total number of nested (sub) transactions created
+     */
+    long getNumberOfNestedTransactions();
+
+    /**
+     * Returns the number of transactions which have terminated with heuristic outcomes.
+     * @return the transactions which have terminated with heuristic outcomes
+     */
+    long getNumberOfHeuristics();
+
+    /**
+     * Returns the number of committed transactions
+     * @return rhe number of committed transactions
+     */
+    long getNumberOfCommittedTransactions();
+
+    /**
+     * Returns the number of aborted (i.e. rolledback) transactions
+     * @return The number of rolledback transactions.
+     */
+    long getNumberOfAbortedTransactions();
+
+    /**
+     * Get the number of transactions that have begun but not yet terminated.
+     * Note: This count is approximate, particularly in recovery situations.
+     * @return the number of transactions that have begun but not yet terminated
+     */
+    long getNumberOfInflightTransactions();
+
+    /**
+     * Returns the number of transactions that have rolled back due to timeout.
+     * @return the number of transactions that have rolled back due to timeout.
+     */
+    long getNumberOfTimedOutTransactions();
+
+    /**
+     * Returns the number of transactions that have been rolled back by application request.
+     * This includes those that timeout, since the timeout behaviour is considered an
+     * attribute of the application configuration.
+     * @return the number of transactions that have been rolled back by application request.
+     */
+    long getNumberOfApplicationRollbacks();
+
+    /**
+     * Returns the number of transactions that rolled back due to resource (participant) failure.
+     * @return the number of transactions that rolled back due to resource (participant) failure.
+     */
+    long getNumberOfResourceRollbacks();
+}

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/classes/com/arjuna/ats/tsmx/mbeans/PerformanceStatistics.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/classes/com/arjuna/ats/tsmx/mbeans/PerformanceStatistics.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/classes/com/arjuna/ats/tsmx/mbeans/PerformanceStatistics.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -32,6 +32,10 @@
 
 import com.arjuna.ats.arjuna.coordinator.TxStats;
 
+/**
+ * @deprecated
+ */
+ at Deprecated
 public class PerformanceStatistics implements PerformanceStatisticsMBean
 {
 	private final static String ICON_FILENAME="performance-icon.gif";
@@ -41,9 +45,9 @@
 	 *
 	 * @return The number of transactions created.
 	 */
-	public int getNumberOfTransactions()
+	public long getNumberOfTransactions()
 	{
-		return TxStats.numberOfTransactions();
+		return TxStats.getInstance().getNumberOfTransactions();
 	}
 
 	/**
@@ -51,9 +55,9 @@
 	 *
 	 * @return The number of nested transactions created so far.
 	 */
-	public int getNumberOfNestedTransactions()
+	public long getNumberOfNestedTransactions()
 	{
-		return TxStats.numberOfNestedTransactions();
+		return TxStats.getInstance().getNumberOfNestedTransactions();
 	}
 
 	/**
@@ -62,9 +66,9 @@
 	 *
 	 * @return The number of transactions which have terminated with a heuristic outcome.
 	 */
-	public int getNumberOfHeuristics()
+	public long getNumberOfHeuristics()
 	{
-		return TxStats.numberOfHeuristics();
+		return TxStats.getInstance().getNumberOfHeuristics();
 	}
 
 	/**
@@ -72,9 +76,9 @@
 	 *
 	 * @return The number of transactions which have been committed.
 	 */
-	public int getNumberOfCommittedTransactions()
+	public long getNumberOfCommittedTransactions()
 	{
-		return TxStats.numberOfCommittedTransactions();
+		return TxStats.getInstance().getNumberOfCommittedTransactions();
 	}
 
 	/**
@@ -82,9 +86,9 @@
 	 *
 	 * @return The number of transactions which have been aborted.
 	 */
-	public int getNumberOfAbortedTransactions()
+	public long getNumberOfAbortedTransactions()
 	{
-		return TxStats.numberOfAbortedTransactions();
+		return TxStats.getInstance().getNumberOfAbortedTransactions();
 	}
 
 	public String getIconFilename()

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/classes/com/arjuna/ats/tsmx/mbeans/PerformanceStatisticsMBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/classes/com/arjuna/ats/tsmx/mbeans/PerformanceStatisticsMBean.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/classes/com/arjuna/ats/tsmx/mbeans/PerformanceStatisticsMBean.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -30,12 +30,11 @@
  */
 package com.arjuna.ats.tsmx.mbeans;
 
-import javax.management.*;
-import java.util.ArrayList;
-
 /**
  * This class exposes the ArjunaJTS performance information via the JMX Management Bean interface.
+ * @deprecated
  */
+ at Deprecated
 public interface PerformanceStatisticsMBean
 {
 	/**
@@ -43,14 +42,14 @@
 	 *
 	 * @return The number of transactions created.
 	 */
-	public int getNumberOfTransactions();
+	public long getNumberOfTransactions();
 
 	/**
 	 * Get the number of nested (sub) transactions created so far.
 	 *
 	 * @return The number of nested transactions created so far.
 	 */
-	public int getNumberOfNestedTransactions();
+	public long getNumberOfNestedTransactions();
 
 	/**
 	 * Get the number of transactions which have terminated with
@@ -58,21 +57,21 @@
 	 *
 	 * @return The number of transactions which have terminated with a heuristic outcome.
 	 */
-	public int getNumberOfHeuristics();
+	public long getNumberOfHeuristics();
 
 	/**
 	 * Get the number of transactions which have been committed.
 	 *
 	 * @return The number of transactions which have been committed.
 	 */
-	public int getNumberOfCommittedTransactions();
+	public long getNumberOfCommittedTransactions();
 
 	/**
 	 * Get the number of transactions which have been aborted.
 	 *
 	 * @return The number of transactions which have been aborted.
 	 */
-	public int getNumberOfAbortedTransactions();
+	public long getNumberOfAbortedTransactions();
 
 	public String getIconFilename();
 }

Modified: labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common/TxojEnvironmentBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common/TxojEnvironmentBean.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common/TxojEnvironmentBean.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -27,11 +27,12 @@
 import java.io.File;
 
 /**
- * TODO javadoc
- * TODO test case
+ * A JavaBean containing configuration properties for the transactional object system.
+ *
+ * @author Jonathan Halliday (jonathan.halliday at redhat.com)
  */
 @PropertyPrefix(prefix = "com.arjuna.ats.txoj.lockstore.")
-public class TxojEnvironmentBean
+public class TxojEnvironmentBean implements TxojEnvironmentBeanMBean
 {
     @FullPropertyName(name = "com.arjuna.ats.txoj.common.propertiesFile")
     private String propertiesFile = "";

Modified: labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/common/JDBCEnvironmentBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/common/JDBCEnvironmentBean.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/common/JDBCEnvironmentBean.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -31,7 +31,7 @@
  * @author Jonathan Halliday (jonathan.halliday at redhat.com)
  */
 @PropertyPrefix(prefix = "com.arjuna.ats.jdbc.")
-public class JDBCEnvironmentBean
+public class JDBCEnvironmentBean implements JDBCEnvironmentBeanMBean
 {
     @FullPropertyName(name = "com.arjuna.ats.jdbc.common.propertiesFile")
     private String propertiesFile = "";

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBean.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBean.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -29,7 +29,7 @@
  * @author Jonathan Halliday (jonathan.halliday at redhat.com)
  */
 @PropertyPrefix(prefix = "com.arjuna.ats.jta.")
-public class JTAEnvironmentBean
+public class JTAEnvironmentBean implements JTAEnvironmentBeanMBean
 {
     @FullPropertyName(name = "com.arjuna.ats.jta.common.propertiesFile")
     private String propertiesFile = "";

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/TransactionFactoryImple.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/TransactionFactoryImple.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/TransactionFactoryImple.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -646,16 +646,16 @@
 	{
 		GlobalTransactionInfo info = new GlobalTransactionInfo();
 
-		info.totalNumberOfTransactions = com.arjuna.ats.arjuna.coordinator.TxStats.numberOfTransactions();
-		info.numberOfCommittedTransactions = com.arjuna.ats.arjuna.coordinator.TxStats.numberOfCommittedTransactions();
-		info.numberOfAbortedTransactions = com.arjuna.ats.arjuna.coordinator.TxStats.numberOfAbortedTransactions();
+		info.totalNumberOfTransactions = (int)com.arjuna.ats.arjuna.coordinator.TxStats.getInstance().getNumberOfTransactions();
+		info.numberOfCommittedTransactions = (int)com.arjuna.ats.arjuna.coordinator.TxStats.getInstance().getNumberOfCommittedTransactions();
+		info.numberOfAbortedTransactions = (int)com.arjuna.ats.arjuna.coordinator.TxStats.getInstance().getNumberOfAbortedTransactions();
 
 		if (info.totalNumberOfTransactions > 0)
 			info.averageLifetime = (float) (TransactionReaper.transactionLifetime() / info.totalNumberOfTransactions);
 		else
 			info.averageLifetime = (float) 0.0;
 
-		info.numberOfHeuristics = com.arjuna.ats.arjuna.coordinator.TxStats.numberOfHeuristics();
+		info.numberOfHeuristics = (int)com.arjuna.ats.arjuna.coordinator.TxStats.getInstance().getNumberOfHeuristics();
 
 		TransactionReaper reaper = TransactionReaper.transactionReaper();
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/JTSEnvironmentBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/JTSEnvironmentBean.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/JTSEnvironmentBean.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -23,13 +23,15 @@
 import com.arjuna.common.internal.util.propertyservice.FullPropertyName;
 import com.arjuna.common.internal.util.propertyservice.PropertyPrefix;
 
+import java.net.InetAddress;
+
 /**
  * A JavaBean containing configuration properties for the JTS system.
  *
  * @author Jonathan Halliday (jonathan.halliday at redhat.com)
  */
 @PropertyPrefix(prefix = "com.arjuna.ats.jts.")
-public class JTSEnvironmentBean
+public class JTSEnvironmentBean implements JTSEnvironmentBeanMBean
 {
     @FullPropertyName(name= "com.arjuna.ats.jts.common.propertiesFile")
     private String propertiesFile;
@@ -206,6 +208,10 @@
         this.recoveryManagerAddress = recoveryManagerAddress;
     }
 
+    public void setRecoveryManagerInetAddress(InetAddress inetAddress) {
+        setRecoveryManagerAddress(inetAddress.getHostAddress());
+    }
+
 //    public static final String OTS_1_0_TIMEOUT_PROPAGATION = "com.arjuna.ats.jts.ots_1_0.timeoutPropagation";
     public boolean isTimeoutPropagation()
     {

Modified: labs/jbosstm/trunk/ArjunaJTS/orbportability/classes/com/arjuna/orbportability/common/OrbPortabilityEnvironmentBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/orbportability/classes/com/arjuna/orbportability/common/OrbPortabilityEnvironmentBean.java	2009-08-06 13:00:00 UTC (rev 28855)
+++ labs/jbosstm/trunk/ArjunaJTS/orbportability/classes/com/arjuna/orbportability/common/OrbPortabilityEnvironmentBean.java	2009-08-06 13:23:09 UTC (rev 28856)
@@ -28,7 +28,7 @@
  * @author Jonathan Halliday (jonathan.halliday at redhat.com)
  */
 @PropertyPrefix(prefix = "com.arjuna.orbportability.")
-public class OrbPortabilityEnvironmentBean
+public class OrbPortabilityEnvironmentBean implements OrbPortabilityEnvironmentBeanMBean
 {
     private String propertiesFile;
 



More information about the jboss-svn-commits mailing list