[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