diff -Naur jboss-jts-4.16.2.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfGraph.java jboss-jts-4.16.2.Final-work/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfGraph.java --- jboss-jts-4.16.2.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfGraph.java 2012-01-19 02:36:02.000000000 -0500 +++ jboss-jts-4.16.2.Final-work/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfGraph.java 1969-12-31 19:00:00.000000000 -0500 @@ -1,762 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2011, Red Hat, Inc. and/or its affiliates, - * 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) 2011, - * @author JBoss, by Red Hat. - */ -package com.arjuna.ats.arjuna.tools.stats; - -import java.awt.BorderLayout; -import java.awt.Container; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.IOException; -import java.lang.reflect.InvocationTargetException; -import java.net.MalformedURLException; -import java.text.SimpleDateFormat; -import java.util.TimeZone; - -import javax.management.JMX; -import javax.management.MBeanServerConnection; -import javax.management.ObjectName; -import javax.management.remote.JMXConnector; -import javax.management.remote.JMXConnectorFactory; -import javax.management.remote.JMXServiceURL; -import javax.swing.JComponent; -import javax.swing.JFrame; -import javax.swing.JMenuBar; -import javax.swing.JSpinner; -import javax.swing.SpinnerModel; -import javax.swing.SpinnerNumberModel; -import javax.swing.SwingUtilities; -import javax.swing.SwingWorker; -import javax.swing.border.EmptyBorder; - -import org.jfree.data.general.DefaultPieDataset; -import org.jfree.data.xy.XYSeries; -import org.jfree.data.xy.XYSeriesCollection; - -import com.arjuna.ats.arjuna.common.CoordinatorEnvironmentBeanMBean; -import com.arjuna.ats.arjuna.coordinator.TxStatsMBean; - -public class TxPerfGraph extends javax.swing.JPanel { //JFrame { - private final static int NUMBER_OF_SAMPLES = 100; - - private int POLL_PERIOD = 4000; // in ms - - public final static int NUMBER_OF_TRANSACTIONS_SERIES = 0; - public final static int NUMBER_OF_INFLIGHT_SERIES = 1; - public final static int NUMBER_OF_COMMITTED_SERIES = 2; - public final static int NUMBER_OF_ABORTED_SERIES = 3; - public final static int NUMBER_OF_HEURISTICS_SERIES = 4; - public final static int NUMBER_OF_NESTED_SERIES = 5; - public final static int NUMBER_OF_TIMEDOUT_SERIES = 6; - - private final static String[] SERIES_LABELS = { - "Transactions Created", - "In Flight Transactions", - "Committed Transactions", - "Aborted Transactions", - "Heuristics Raised", - "Nested Transactions Created", - "Timed Out Transactions", - }; - - private final static String[] PIE_CHART_LABELS = { - "Nested", - "Heuristic", - "Committed", - "Aborted", - }; - - private final static int[] PIE_CHART_SERIES = new int[] { - NUMBER_OF_NESTED_SERIES, - NUMBER_OF_HEURISTICS_SERIES, - NUMBER_OF_COMMITTED_SERIES, - NUMBER_OF_ABORTED_SERIES, - }; - - private static final TimeZone GMT = TimeZone.getTimeZone("GMT"); - private static SimpleDateFormat timeFormatter = new SimpleDateFormat("HH:mm:ss"); - - private MBeanServerConnection server; - private JFrame frame; - private TxStatsMBean txMBean; - private CoordinatorEnvironmentBeanMBean coordMBean; - - private XYSeries[] _dataSeries = new XYSeries[7]; - private XYSeriesCollection _tsDS[] = new XYSeriesCollection[7]; - private long counter = 0L; - private DefaultPieDataset pieDS; - // TimerTask timerTask; - // Timer timer = new Timer("TxPerf Sampling thread"); - javax.swing.Timer swingTimer; - ActionListener taskPerformer; - - /** Creates new form TxPerfGraph */ - public TxPerfGraph(JFrame frame) { - this.frame = frame; - timeFormatter.setTimeZone(GMT); - - initComponents(); - - for (int count = 0; count < _dataSeries.length; count++) { - _dataSeries[count] = new XYSeries(SERIES_LABELS[count]);//, Second.class); - //_dataSeries[count].setMaximumItemCount(NUMBER_OF_SAMPLES); - _tsDS[count] = new XYSeriesCollection(_dataSeries[count]); - } - - chart1.setDataset(_tsDS[NUMBER_OF_TRANSACTIONS_SERIES]); - chart1.setTitle(SERIES_LABELS[NUMBER_OF_TRANSACTIONS_SERIES]); - chart1.setSubtitle(""); - - // DateAxis xAxis = new DateAxis("Time (hh:mm) Zulu", GMT); - // xAxis.setAutoRange(true); - // xAxis.setTickUnit(new DateTickUnit(DateTickUnit.MINUTE, 60, timeFormatter)); - // xAxis.setVerticalTickLabels(true); - // xAxis.setDateFormatOverride(timeFormatter); - - - allTxnBtn.setSelected(true); - - pieDS = new DefaultPieDataset(); - - txnPieChart.setDataset(pieDS); - txnPieChart.setTitle("All Transactions"); - txnPieChart.setSubtitle("(during last time slices)"); - - periodSelectSlider.setMajorTickSpacing(10); - periodSelectSlider.setToolTipText( - "Select the number of (" + POLL_PERIOD + "ms) time slices over which to show the pie chart"); - - SpinnerModel sm1 = new SpinnerNumberModel(POLL_PERIOD / 1000, 1, 10000, 1); - SpinnerModel sm2 = new SpinnerNumberModel(NUMBER_OF_SAMPLES, 10, 1000, 1); - - pollIntervalSpinner.setModel(sm1); - pollIntervalSpinner.setEditor(new JSpinner.NumberEditor(pollIntervalSpinner, "#")); - sampleSizeSpinner.setModel(sm2); - sampleSizeSpinner.setEditor(new JSpinner.NumberEditor(sampleSizeSpinner, "#")); - - pollIntervalSpinner.setVisible(false); - sampleSizeSpinner.setVisible(false); - enableStatsCB.setSelected(false); - resetStatsBtn.setVisible(false); - pollIntervalBtn.setVisible(false); - sampleSizeBtn1.setVisible(false); - - taskPerformer = new ActionListener() { - public void actionPerformed(ActionEvent evt) { - newSwingWorker().execute(); - } - }; - - swingTimer = new javax.swing.Timer(POLL_PERIOD, taskPerformer); - - chartsPane.setSelectedIndex(1); - } - - public void setMBeanServerConnection(MBeanServerConnection mbs) { - this.server = mbs; - try { - txMBean = JMX.newMBeanProxy(server, - new ObjectName("jboss.jta:name=TransactionStatistics"), TxStatsMBean.class); - coordMBean = JMX.newMBeanProxy(server, - new ObjectName("jboss.jta:name=CoordinatorEnvironmentBean"), - CoordinatorEnvironmentBeanMBean.class); - - coordMBean.setEnableStatistics(true); - enableStatsCB.setSelected(true); - -// } catch (javax.management.InstanceNotFoundException e) { -// System.out.println("Transaction statistics MBean is not available."); - } catch (Exception e) { - e.printStackTrace(); - } - } - - private void resetStats() { - //int cindex = _dataSeries[0].getIndex(now); - } - - private void sample() { - try { - counter += 1; - - long [] stats = new long[7]; - - stats[NUMBER_OF_TRANSACTIONS_SERIES] = txMBean.getNumberOfTransactions(); - stats[NUMBER_OF_INFLIGHT_SERIES] = txMBean.getNumberOfInflightTransactions(); - stats[NUMBER_OF_COMMITTED_SERIES] = txMBean.getNumberOfCommittedTransactions(); - stats[NUMBER_OF_ABORTED_SERIES] = txMBean.getNumberOfAbortedTransactions(); - stats[NUMBER_OF_HEURISTICS_SERIES] = txMBean.getNumberOfHeuristics(); - stats[NUMBER_OF_NESTED_SERIES] = txMBean.getNumberOfNestedTransactions(); - stats[NUMBER_OF_TIMEDOUT_SERIES] = txMBean.getNumberOfTimedOutTransactions(); - - for (int i = 0; i < 7; i++) { - _dataSeries[i].add(counter, stats[i]); - } - - if (counter > 1) { - int cindex = _dataSeries[0].indexOf(counter); - int slices = periodSelectSlider.getValue(); - int lb = cindex < slices ? 0 : cindex - slices; - - for (int i = 0; i < PIE_CHART_SERIES.length; i++) { - XYSeries ts = _dataSeries[PIE_CHART_SERIES[i]]; - Number n1 = ts.getDataItem(cindex).getY(); - Number n2 = ts.getDataItem(lb).getY(); - - pieDS.setValue(PIE_CHART_LABELS[i], n1.longValue() - n2.longValue()); - } - - txnPieChart.setSubtitle("(during last " + // (cindex - lb + 1) * POLL_PERIOD / 1000 + " seconds) - " + - (cindex - lb + 1) + " poll intervals"); - } - } catch (Exception e) { - System.err.println("MBean property failure: " + e); - } - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents - private void initComponents() { - - seriesSelectBtnGroup = new javax.swing.ButtonGroup(); - configBtnGroup = new javax.swing.ButtonGroup(); - jPanel1 = new javax.swing.JPanel(); - btnPanel = new javax.swing.JPanel(); - jLabel1 = new javax.swing.JLabel(); - allTxnBtn = new javax.swing.JRadioButton(); - inFlightTxnBtn = new javax.swing.JRadioButton(); - committedTxnBtn = new javax.swing.JRadioButton(); - abortedTxnBtn = new javax.swing.JRadioButton(); - heuristicTxnBtn = new javax.swing.JRadioButton(); - nestedTxnBtn = new javax.swing.JRadioButton(); - timedoutTxnBtn = new javax.swing.JRadioButton(); - chartsPane = new javax.swing.JTabbedPane(); - configTab = new javax.swing.JPanel(); - resetStatsBtn = new javax.swing.JButton(); - pollIntervalSpinner = new javax.swing.JSpinner(); - pollIntervalBtn = new javax.swing.JButton(); - enableStatsCB = new javax.swing.JCheckBox(); - sampleSizeBtn1 = new javax.swing.JButton(); - sampleSizeSpinner = new javax.swing.JSpinner(); - chart1 = new org.jfree.beans.JLineChart(); - txnPieChart = new org.jfree.beans.JPieChart(); - periodSelectPanel = new javax.swing.JPanel(); - jLabel2 = new javax.swing.JLabel(); - periodSelectSlider = new javax.swing.JSlider(); - menuBar = new javax.swing.JMenuBar(); - - setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.LINE_AXIS)); - - jLabel1.setText("Select Series"); - - seriesSelectBtnGroup.add(allTxnBtn); - allTxnBtn.setText("Transactions"); - allTxnBtn.setToolTipText("Show all transactions"); - allTxnBtn.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - allTxnBtnActionPerformed(evt); - } - }); - - seriesSelectBtnGroup.add(inFlightTxnBtn); - inFlightTxnBtn.setText("In Flight"); - inFlightTxnBtn.setToolTipText("Show transactions that have not yet been committed/aborted"); - inFlightTxnBtn.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - inFlightTxnBtnActionPerformed(evt); - } - }); - - seriesSelectBtnGroup.add(committedTxnBtn); - committedTxnBtn.setText("Committed"); - committedTxnBtn.setToolTipText("Show successfully committed transactions"); - committedTxnBtn.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - committedTxnBtnActionPerformed(evt); - } - }); - - seriesSelectBtnGroup.add(abortedTxnBtn); - abortedTxnBtn.setText("Aborted"); - abortedTxnBtn.setToolTipText("Show stats for rolled back transactions"); - abortedTxnBtn.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - abortedTxnBtnActionPerformed(evt); - } - }); - - seriesSelectBtnGroup.add(heuristicTxnBtn); - heuristicTxnBtn.setText("Heuristics"); - heuristicTxnBtn.setToolTipText("Show stats for transactions that terminated with a heuristic outcome"); - heuristicTxnBtn.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - heuristicTxnBtnActionPerformed(evt); - } - }); - - seriesSelectBtnGroup.add(nestedTxnBtn); - nestedTxnBtn.setText("Nested"); - nestedTxnBtn.setToolTipText("Stats for nested transactions"); - nestedTxnBtn.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - nestedTxnBtnActionPerformed(evt); - } - }); - - seriesSelectBtnGroup.add(timedoutTxnBtn); - timedoutTxnBtn.setText("Timed Out"); - timedoutTxnBtn.setToolTipText("Stats for transactions which exceeded there time to live"); - timedoutTxnBtn.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - timedoutTxnBtnActionPerformed(evt); - } - }); - - javax.swing.GroupLayout btnPanelLayout = new javax.swing.GroupLayout(btnPanel); - btnPanel.setLayout(btnPanelLayout); - btnPanelLayout.setHorizontalGroup( - btnPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(btnPanelLayout.createSequentialGroup() - .addContainerGap() - .addGroup(btnPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(btnPanelLayout.createSequentialGroup() - .addGroup(btnPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(inFlightTxnBtn) - .addComponent(allTxnBtn) - .addComponent(abortedTxnBtn) - .addComponent(committedTxnBtn)) - .addGap(35, 35, 35) - .addGroup(btnPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(nestedTxnBtn) - .addComponent(heuristicTxnBtn) - .addComponent(timedoutTxnBtn))) - .addComponent(jLabel1)) - .addContainerGap(188, Short.MAX_VALUE)) - ); - btnPanelLayout.setVerticalGroup( - btnPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, btnPanelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(jLabel1) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(btnPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(btnPanelLayout.createSequentialGroup() - .addComponent(heuristicTxnBtn) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(nestedTxnBtn) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(timedoutTxnBtn)) - .addGroup(btnPanelLayout.createSequentialGroup() - .addComponent(allTxnBtn) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(inFlightTxnBtn) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(committedTxnBtn) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(abortedTxnBtn)))) - ); - - chartsPane.addChangeListener(new javax.swing.event.ChangeListener() { - public void stateChanged(javax.swing.event.ChangeEvent evt) { - chartsPaneStateChanged(evt); - } - }); - - resetStatsBtn.setText("Reset Stats"); - resetStatsBtn.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - resetStatsBtnActionPerformed(evt); - } - }); - - pollIntervalSpinner.setToolTipText("Change polling interval (in seconds)"); - - pollIntervalBtn.setText("Set Poll Interval"); - pollIntervalBtn.setToolTipText("Change polling interval (in seconds)"); - pollIntervalBtn.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - pollIntervalBtnActionPerformed(evt); - } - }); - - enableStatsCB.setSelected(true); - enableStatsCB.setText("Enable Statistics"); - enableStatsCB.setToolTipText("Stop data collection by disabling the stats MBean in the target JVM"); - enableStatsCB.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - enableStatsCBActionPerformed(evt); - } - }); - - sampleSizeBtn1.setText("Set Sample Size"); - sampleSizeBtn1.setToolTipText("Change polling interval (in seconds)"); - sampleSizeBtn1.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - sampleSizeBtn1ActionPerformed(evt); - } - }); - - sampleSizeSpinner.setToolTipText("Change Number of Data Samples "); - - javax.swing.GroupLayout configTabLayout = new javax.swing.GroupLayout(configTab); - configTab.setLayout(configTabLayout); - configTabLayout.setHorizontalGroup( - configTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(configTabLayout.createSequentialGroup() - .addGap(23, 23, 23) - .addGroup(configTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(resetStatsBtn, javax.swing.GroupLayout.DEFAULT_SIZE, 246, Short.MAX_VALUE) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, configTabLayout.createSequentialGroup() - .addComponent(pollIntervalBtn, javax.swing.GroupLayout.DEFAULT_SIZE, 120, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(pollIntervalSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGroup(configTabLayout.createSequentialGroup() - .addGap(2, 2, 2) - .addGroup(configTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(enableStatsCB) - .addGroup(configTabLayout.createSequentialGroup() - .addComponent(sampleSizeBtn1) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(sampleSizeSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE))))) - .addGap(149, 149, 149)) - ); - configTabLayout.setVerticalGroup( - configTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(configTabLayout.createSequentialGroup() - .addGap(38, 38, 38) - .addComponent(enableStatsCB) - .addGap(29, 29, 29) - .addGroup(configTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(sampleSizeBtn1) - .addComponent(sampleSizeSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(configTabLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(pollIntervalBtn) - .addComponent(pollIntervalSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(resetStatsBtn) - .addContainerGap(47, Short.MAX_VALUE)) - ); - - chartsPane.addTab("Settings", configTab); - - chart1.setXAxisLabel("Number of Poll Intervals"); - chart1.setXAxisScale(org.jfree.beans.AxisScale.INTEGER); - chart1.setYAxisLabel("Number of Txns"); - chart1.setYAxisScale(org.jfree.beans.AxisScale.INTEGER); - - javax.swing.GroupLayout chart1Layout = new javax.swing.GroupLayout(chart1); - chart1.setLayout(chart1Layout); - chart1Layout.setHorizontalGroup( - chart1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 418, Short.MAX_VALUE) - ); - chart1Layout.setVerticalGroup( - chart1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 235, Short.MAX_VALUE) - ); - - chartsPane.addTab("Transactions", null, chart1, "View Transaction Statistics"); - - javax.swing.GroupLayout txnPieChartLayout = new javax.swing.GroupLayout(txnPieChart); - txnPieChart.setLayout(txnPieChartLayout); - txnPieChartLayout.setHorizontalGroup( - txnPieChartLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 418, Short.MAX_VALUE) - ); - txnPieChartLayout.setVerticalGroup( - txnPieChartLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 235, Short.MAX_VALUE) - ); - - chartsPane.addTab("Pie Chart", null, txnPieChart, "View Transactions as a Pie Chart"); - - jLabel2.setText("Time Slices"); - jLabel2.setToolTipText("Select the number of polling periods to use for populating the pie chart"); - - periodSelectSlider.setPaintLabels(true); - periodSelectSlider.setPaintTicks(true); - periodSelectSlider.setToolTipText("Select the number of time slices over which to show the pie chart"); - periodSelectSlider.setValue(30); - - javax.swing.GroupLayout periodSelectPanelLayout = new javax.swing.GroupLayout(periodSelectPanel); - periodSelectPanel.setLayout(periodSelectPanelLayout); - periodSelectPanelLayout.setHorizontalGroup( - periodSelectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(periodSelectPanelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(jLabel2) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(periodSelectSlider, javax.swing.GroupLayout.DEFAULT_SIZE, 334, Short.MAX_VALUE)) - ); - periodSelectPanelLayout.setVerticalGroup( - periodSelectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(periodSelectPanelLayout.createSequentialGroup() - .addGroup(periodSelectPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(periodSelectPanelLayout.createSequentialGroup() - .addGap(12, 12, 12) - .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 36, Short.MAX_VALUE)) - .addComponent(periodSelectSlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap()) - ); - - javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); - jPanel1.setLayout(jPanel1Layout); - jPanel1Layout.setHorizontalGroup( - jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(periodSelectPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(chartsPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 430, Short.MAX_VALUE) - .addComponent(btnPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - ); - jPanel1Layout.setVerticalGroup( - jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(chartsPane, javax.swing.GroupLayout.PREFERRED_SIZE, 278, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(periodSelectPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(14, Short.MAX_VALUE)) - ); - - add(jPanel1); - add(menuBar); - }// </editor-fold>//GEN-END:initComponents - - private void btnActionPerformed(int series) { - chart1.setDataset(_tsDS[series]); - chart1.setTitle(SERIES_LABELS[series]); - } - private void allTxnBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_allTxnBtnActionPerformed - btnActionPerformed(NUMBER_OF_TRANSACTIONS_SERIES); - }//GEN-LAST:event_allTxnBtnActionPerformed - - private void inFlightTxnBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_inFlightTxnBtnActionPerformed - btnActionPerformed(NUMBER_OF_INFLIGHT_SERIES); - }//GEN-LAST:event_inFlightTxnBtnActionPerformed - - private void heuristicTxnBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_heuristicTxnBtnActionPerformed - btnActionPerformed(NUMBER_OF_HEURISTICS_SERIES); - }//GEN-LAST:event_heuristicTxnBtnActionPerformed - - private void committedTxnBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_committedTxnBtnActionPerformed - btnActionPerformed(NUMBER_OF_COMMITTED_SERIES); - }//GEN-LAST:event_committedTxnBtnActionPerformed - - private void abortedTxnBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_abortedTxnBtnActionPerformed - btnActionPerformed(NUMBER_OF_ABORTED_SERIES); - }//GEN-LAST:event_abortedTxnBtnActionPerformed - - private void nestedTxnBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nestedTxnBtnActionPerformed - btnActionPerformed(NUMBER_OF_NESTED_SERIES); - }//GEN-LAST:event_nestedTxnBtnActionPerformed - - private void timedoutTxnBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_timedoutTxnBtnActionPerformed - btnActionPerformed(NUMBER_OF_TIMEDOUT_SERIES); - }//GEN-LAST:event_timedoutTxnBtnActionPerformed - - private void chartsPaneStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_chartsPaneStateChanged - int tab = chartsPane.getSelectedIndex(); - - btnPanel.setVisible(false); - periodSelectPanel.setVisible(false); - - switch (tab) { - case 1: btnPanel.setVisible(true); break; - case 2: periodSelectPanel.setVisible(true); break; - default: - break; - } - }//GEN-LAST:event_chartsPaneStateChanged - - private void pollIntervalBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pollIntervalBtnActionPerformed - Integer v = (Integer) pollIntervalSpinner.getValue(); - - POLL_PERIOD = v * 1000; - swingTimer.setDelay(POLL_PERIOD); - startPolling(); - }//GEN-LAST:event_pollIntervalBtnActionPerformed - - private void resetStatsBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_resetStatsBtnActionPerformed - resetStats(); -}//GEN-LAST:event_resetStatsBtnActionPerformed - - private void enableStatsCBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_enableStatsCBActionPerformed - coordMBean.setEnableStatistics(enableStatsCB.isSelected()); - }//GEN-LAST:event_enableStatsCBActionPerformed - - private void sampleSizeBtn1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sampleSizeBtn1ActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_sampleSizeBtn1ActionPerformed - - private void startPolling() { - // timer.cancel(); - - //timer.schedule(timerTask, 0, POLL_PERIOD); - if (swingTimer.isRunning()) - swingTimer.restart(); - else - swingTimer.start(); - } - - private static void createAndShowGUI(TxPerfGraph perfPanel) { - JFrame frame = perfPanel.getFrame(); - // Create and set up the window. - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - - // Create and set up the content pane. - JComponent contentPane = (JComponent) frame.getContentPane(); - contentPane.add(perfPanel, BorderLayout.CENTER); - contentPane.setOpaque(true); //content panes must be opaque - contentPane.setBorder(new EmptyBorder(12, 12, 12, 12)); - frame.setContentPane(contentPane); - - // Display the window. - frame.pack(); - frame.setVisible(true); - } - - private static MBeanServerConnection connect(String hostname, int port) { - String urlPath = "/jndi/rmi://" + hostname + ":" + port + "/jmxrmi"; - MBeanServerConnection server = null; - - try { - JMXServiceURL url = new JMXServiceURL("rmi", "", 0, urlPath); - JMXConnector jmxc = JMXConnectorFactory.connect(url); - server = jmxc.getMBeanServerConnection(); - } catch (MalformedURLException e) { - } catch (IOException e) { - System.err.println("Unable to get an MBean Server connection: " + e.getMessage()); - System.exit(1); - } - - return server; - } - - /* - * SwingWorker for updating the TxPerf tab - */ - public SwingWorker<XYSeries[], Object> newSwingWorker() { - return new Worker(); - } - - void dispose() { -// if (coordMBean != null && disableStatsOnDispose.isSelected()) -// coordMBean.setEnableStatistics(false); - } - - class Worker extends SwingWorker<XYSeries[], Object> { - - @Override - protected XYSeries[] doInBackground() throws Exception { - sample(); - return _dataSeries; - } - } - - public static void main(String args[]) throws InterruptedException, InvocationTargetException { - final TxPerfGraph graphPanel = new TxPerfGraph(new JFrame("TxPerf")); - String hostname = "localhost"; - int port = 1090; - - if (args.length > 0) { - String[] opts = args[0].split(":"); - - hostname = opts[0]; - - if (opts.length > 1) - port = Integer.parseInt(opts[1]); - } - - System.out.println("Connecting to MBeanServer on endpoint " + hostname + ":" + port); - - MBeanServerConnection server = connect(hostname, port); - graphPanel.setMBeanServerConnection(server); - - SwingUtilities.invokeAndWait(new Runnable() { - - public void run() { - createAndShowGUI(graphPanel); - } - }); - - graphPanel.startPolling(); - - } - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JRadioButton abortedTxnBtn; - private javax.swing.JRadioButton allTxnBtn; - private javax.swing.JPanel btnPanel; - private org.jfree.beans.JLineChart chart1; - private javax.swing.JTabbedPane chartsPane; - private javax.swing.JRadioButton committedTxnBtn; - private javax.swing.ButtonGroup configBtnGroup; - private javax.swing.JPanel configTab; - private javax.swing.JCheckBox enableStatsCB; - private javax.swing.JRadioButton heuristicTxnBtn; - private javax.swing.JRadioButton inFlightTxnBtn; - private javax.swing.JLabel jLabel1; - private javax.swing.JLabel jLabel2; - private javax.swing.JPanel jPanel1; - private javax.swing.JMenuBar menuBar; - private javax.swing.JRadioButton nestedTxnBtn; - private javax.swing.JPanel periodSelectPanel; - private javax.swing.JSlider periodSelectSlider; - private javax.swing.JButton pollIntervalBtn; - private javax.swing.JSpinner pollIntervalSpinner; - private javax.swing.JButton resetStatsBtn; - private javax.swing.JButton sampleSizeBtn1; - private javax.swing.JSpinner sampleSizeSpinner; - private javax.swing.ButtonGroup seriesSelectBtnGroup; - private javax.swing.JRadioButton timedoutTxnBtn; - private org.jfree.beans.JPieChart txnPieChart; - // End of variables declaration//GEN-END:variables - - /** - * @return the frame - */ - public JFrame getFrame() { - return frame; - } - - private void setDefaultCloseOperation(int operation) { - frame.setDefaultCloseOperation(operation); - } - - private Container getContentPane() { - return frame.getContentPane(); - } - - private void setJMenuBar(JMenuBar menuBar) { - frame.setJMenuBar(menuBar); - } - - private void pack() { - } -} diff -Naur jboss-jts-4.16.2.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfPlugin.java jboss-jts-4.16.2.Final-work/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfPlugin.java --- jboss-jts-4.16.2.Final/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfPlugin.java 2012-01-19 02:36:02.000000000 -0500 +++ jboss-jts-4.16.2.Final-work/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/tools/stats/TxPerfPlugin.java 1969-12-31 19:00:00.000000000 -0500 @@ -1,89 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2011, Red Hat, Inc. and/or its affiliates, - * 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) 2011, - * @author JBoss, by Red Hat. - */ -package com.arjuna.ats.arjuna.tools.stats; - -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.LinkedHashMap; -import java.util.Map; - -import javax.swing.JFrame; -import javax.swing.JPanel; -import javax.swing.SwingWorker; - -import com.sun.tools.jconsole.JConsoleContext; -import com.sun.tools.jconsole.JConsoleContext.ConnectionState; -import com.sun.tools.jconsole.JConsolePlugin; - -public class TxPerfPlugin extends JConsolePlugin implements PropertyChangeListener -{ - private TxPerfGraph graph; - private Map<String, JPanel> tabs; - - public TxPerfPlugin() { - // register itself as a listener - addContextPropertyChangeListener(this); - } - - /* - * Returns a TxPerf tab to be added in JConsole. - */ - public synchronized Map<String, JPanel> getTabs() { - if (tabs == null) { - graph = new TxPerfGraph(new JFrame("TxPerf")); - - graph.setMBeanServerConnection( - getContext().getMBeanServerConnection()); - // use LinkedHashMap if you want a predictable order - // of the tabs to be added in JConsole - tabs = new LinkedHashMap<String, JPanel>(); - tabs.put("TxPerf", graph); - } - return tabs; - } - - public void propertyChange(PropertyChangeEvent ev) { - String prop = ev.getPropertyName(); - if (prop == null ? JConsoleContext.CONNECTION_STATE_PROPERTY == null : prop.equals(JConsoleContext.CONNECTION_STATE_PROPERTY)) { - ConnectionState oldState = (ConnectionState)ev.getOldValue(); - ConnectionState newState = (ConnectionState)ev.getNewValue(); - // JConsole supports disconnection and reconnection - // The MBeanServerConnection will become invalid when - // disconnected. Need to use the new MBeanServerConnection object - // created at reconnection time. - if (newState == ConnectionState.CONNECTED && graph != null) { - graph.setMBeanServerConnection( - getContext().getMBeanServerConnection()); - } - } - } - - @Override - public void dispose() { - graph.dispose(); - super.dispose(); - } - - @Override - public SwingWorker<?,?> newSwingWorker() { - return graph.newSwingWorker(); - } -}