[jboss-cvs] JBossAS SVN: r69813 - branches/Branch_4_2/connector/src/main/org/jboss/resource/connectionmanager.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Feb 13 04:44:12 EST 2008


Author: vicky.kak at jboss.com
Date: 2008-02-13 04:44:12 -0500 (Wed, 13 Feb 2008)
New Revision: 69813

Modified:
   branches/Branch_4_2/connector/src/main/org/jboss/resource/connectionmanager/JBossManagedConnectionPool.java
Log:
JBAS-5210 changes.

Modified: branches/Branch_4_2/connector/src/main/org/jboss/resource/connectionmanager/JBossManagedConnectionPool.java
===================================================================
--- branches/Branch_4_2/connector/src/main/org/jboss/resource/connectionmanager/JBossManagedConnectionPool.java	2008-02-13 09:39:54 UTC (rev 69812)
+++ branches/Branch_4_2/connector/src/main/org/jboss/resource/connectionmanager/JBossManagedConnectionPool.java	2008-02-13 09:44:12 UTC (rev 69813)
@@ -42,6 +42,14 @@
 import org.jboss.mx.util.JMXExceptionDecoder;
 import org.jboss.resource.JBossResourceException;
 import org.jboss.resource.connectionmanager.InternalManagedConnectionPool.PoolParams;
+import org.jboss.resource.statistic.JBossStatistics;
+import org.jboss.resource.statistic.StatisticsReporter;
+import org.jboss.resource.statistic.formatter.StatisticsFormatter;
+import org.jboss.resource.statistic.pool.JBossDefaultSubPoolStatisticFormatter;
+import org.jboss.resource.statistic.pool.JBossManagedConnectionPoolStatistics;
+import org.jboss.resource.statistic.pool.JBossSubPoolStatistics;
+import org.jboss.resource.statistic.pool.ManagedConnectionPoolStatistics;
+
 import org.jboss.system.ServiceMBeanSupport;
 import org.jboss.tm.TransactionLocal;
 
@@ -85,12 +93,63 @@
    /** Whether to use separate pools for transactional and non-transaction use */
    private boolean noTxSeparatePools;
 
+   /** The statisticsFormatter 
+   *
+   * */
+   private String statisticsFormatter;
+   
    private String poolJndiName;
 
    public JBossManagedConnectionPool()
    {
    }
 
+   public Object listFormattedSubPoolStatistics(String formatClassName)
+   {
+      final JBossStatistics stats = (JBossStatistics)listStatistics();
+      final ClassLoader cl = Thread.currentThread().getContextClassLoader();
+      Class clazz;
+      StatisticsFormatter formatter = null;
+      
+      try
+      {
+         clazz = cl.loadClass(formatClassName);
+         formatter = (StatisticsFormatter)clazz.newInstance();
+      }
+      catch (Exception e)
+      {
+         log.warn("warn: statistics formatter not found, setting to " + statisticsFormatter);
+         formatter = new JBossDefaultSubPoolStatisticFormatter();
+         
+      }
+      ManagedConnectionPoolStatistics poolStats = (ManagedConnectionPoolStatistics)stats;
+      return formatter.formatStatistics(stats);      
+   }
+
+   public Object listFormattedSubPoolStatistics()
+   {
+      
+      Object formatted = listFormattedSubPoolStatistics(statisticsFormatter);
+      return formatted;  
+   }
+   
+   public Object listStatistics()
+   {
+      ManagedConnectionPoolStatistics stats = null;
+      
+      if (poolingStrategy instanceof StatisticsReporter)
+      {
+         
+         StatisticsReporter reporter = (StatisticsReporter) poolingStrategy;
+         stats = (ManagedConnectionPoolStatistics)reporter.listStatistics();
+         stats.setCriteria(getCriteria());
+         stats.setName(getManagedConnectionFactoryName().toString());
+         
+      }      
+
+      return stats;      
+   }
+   
    public ManagedConnectionPool getManagedConnectionPool()
    {
       return poolingStrategy;
@@ -283,6 +342,16 @@
       return "JBossManagedConnectionPool";
    }
 
+   public String getStatisticsFormatter()
+   {
+      return statisticsFormatter;
+   }
+
+   public void setStatisticsFormatter(String statisticsFormatter)
+   {
+      this.statisticsFormatter = statisticsFormatter;
+   }
+   
    public String getPoolJndiName()
    {
       return this.poolJndiName;
@@ -406,7 +475,7 @@
    /**
     * The base pool implementation
     */
-   public abstract static class BasePool implements ManagedConnectionPool, PreFillPoolSupport
+   public abstract static class BasePool implements ManagedConnectionPool, StatisticsReporter, PreFillPoolSupport
    {
       /** The subpools */
       private final Map subPools = new ConcurrentReaderHashMap();
@@ -843,6 +912,37 @@
             log.trace(toLog);
          }
       }
+      
+      public JBossStatistics listStatistics()
+      {   
+         final ManagedConnectionPoolStatistics subPoolStats = new JBossManagedConnectionPoolStatistics(subPools.size());
+         
+         subPoolStats.setBlockingTimeout(poolParams.blockingTimeout);
+         subPoolStats.setIdleTimeout(poolParams.idleTimeout);
+         subPoolStats.setMax(poolParams.maxSize);
+         subPoolStats.setMin(poolParams.minSize);
+         subPoolStats.setPrefill(poolParams.prefill);
+         subPoolStats.setNoTxnSeperatePool(noTxSeparatePools);
+         
+         for(Iterator iter = subPools.values().iterator(); iter.hasNext();)
+         {           	
+            JBossSubPoolStatistics stat = new JBossSubPoolStatistics();
+            SubPoolContext subContext = (SubPoolContext)iter.next();
+            Boolean trackByTxn = (subContext.getTrackByTx() != null) ? Boolean.TRUE : Boolean.FALSE;
+            stat.setTrackByTxn(trackByTxn);
+            final InternalManagedConnectionPool internalPool = subContext.getSubPool();
+            stat.setAvailableConnections(internalPool.getAvailableConnections());
+            stat.setConnectionsDestroyed(internalPool.getConnectionDestroyedCount());
+            stat.setConnectionsInUse(internalPool.getConnectionInUseCount());
+            stat.setMaxConnectionsInUse(internalPool.getMaxConnectionsInUseCount());
+            stat.setTotalBlockTime(internalPool.getTotalBlockTime());
+            stat.setAverageBlockTime(internalPool.getAverageBlockTime());
+            stat.setMaxWaitTime(internalPool.getMaxWaitTime());
+            stat.setTotalTimedOut(internalPool.getTimedOut());
+            subPoolStats.addSubPool(stat);
+         }
+         return (JBossStatistics)subPoolStats;
+      }
    }
 
    /**




More information about the jboss-cvs-commits mailing list