You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2006/01/24 21:25:45 UTC

svn commit: r372011 - in /incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi: container/JBIContainer.java framework/ComponentMBeanImpl.java management/BaseLifeCycle.java messaging/DeliveryChannelImpl.java

Author: gnodet
Date: Tue Jan 24 12:25:39 2006
New Revision: 372011

URL: http://svn.apache.org/viewcvs?rev=372011&view=rev
Log:
Fix SM-273 : Allow statistics attributes on components to send jmx notifications
This feature is disabled by default for performance

Modified:
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/JBIContainer.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentMBeanImpl.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/management/BaseLifeCycle.java
    incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/DeliveryChannelImpl.java

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/JBIContainer.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/JBIContainer.java?rev=372011&r1=372010&r2=372011&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/JBIContainer.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/container/JBIContainer.java Tue Jan 24 12:25:39 2006
@@ -104,6 +104,7 @@
     protected boolean persistent = false;
     protected List listeners = new CopyOnWriteArrayList();
     protected boolean embedded = false;
+    protected boolean notifyStatistics = false;
 
     /**
      * Default Constructor
@@ -1072,5 +1073,19 @@
 
     public int getRmiPort() {
     	return getManagementContext().getNamingPort();
+    }
+
+    /**
+     * @return Returns the notifyStatistics.
+     */
+    public boolean isNotifyStatistics() {
+        return notifyStatistics;
+    }
+
+    /**
+     * @param notifyStatistics The notifyStatistics to set.
+     */
+    public void setNotifyStatistics(boolean notifyStatistics) {
+        this.notifyStatistics = notifyStatistics;
     }
 }

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentMBeanImpl.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentMBeanImpl.java?rev=372011&r1=372010&r2=372011&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentMBeanImpl.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/framework/ComponentMBeanImpl.java Tue Jan 24 12:25:39 2006
@@ -324,5 +324,10 @@
 	public void setObjectName(ObjectName objectName) {
 		this.objectName = objectName;
 	}
+    
+    public void firePropertyChanged(String name, Object oldValue, Object newValue) {
+        super.firePropertyChanged(name, oldValue, newValue);
+    }
+
 
 }

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/management/BaseLifeCycle.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/management/BaseLifeCycle.java?rev=372011&r1=372010&r2=372011&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/management/BaseLifeCycle.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/management/BaseLifeCycle.java Tue Jan 24 12:25:39 2006
@@ -29,7 +29,7 @@
  * @version $Revision$
  */
 public abstract class BaseLifeCycle implements LifeCycleMBean, MBeanInfoProvider {
-    public static final String INITIALIZED = "initialized";
+    public static final String INITIALIZED = "Initialized";
     protected String currentState = LifeCycleMBean.UNKNOWN;
     protected PropertyChangeListener listener;
     

Modified: incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/DeliveryChannelImpl.java
URL: http://svn.apache.org/viewcvs/incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/DeliveryChannelImpl.java?rev=372011&r1=372010&r2=372011&view=diff
==============================================================================
--- incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/DeliveryChannelImpl.java (original)
+++ incubator/servicemix/trunk/servicemix-core/src/main/java/org/apache/servicemix/jbi/messaging/DeliveryChannelImpl.java Tue Jan 24 12:25:39 2006
@@ -332,10 +332,26 @@
                 intervalCount++;
             }
             
+            // Update stats
             long currentTime = System.currentTimeMillis();
-            messagingStats.getOutboundExchanges().increment();
-            messagingStats.getOutboundExchangeRate().addTime(currentTime - lastSendTime);
+            if (container.isNotifyStatistics()) {
+                long oldCount = messagingStats.getOutboundExchanges().getCount();
+                messagingStats.getOutboundExchanges().increment();
+                componentConnector.getComponentMBean().firePropertyChanged(
+                        "outboundExchangeCount",
+                        new Long(oldCount),
+                        new Long(messagingStats.getOutboundExchanges().getCount()));
+                double oldRate = messagingStats.getOutboundExchangeRate().getAverageTime();
+                messagingStats.getOutboundExchangeRate().addTime(currentTime - lastSendTime);
+                componentConnector.getComponentMBean().firePropertyChanged("outboundExchangeRate",
+                        new Double(oldRate),
+                        new Double(messagingStats.getOutboundExchangeRate().getAverageTime()));
+            } else {
+                messagingStats.getOutboundExchanges().increment();
+                messagingStats.getOutboundExchangeRate().addTime(currentTime - lastSendTime);
+            }
             lastSendTime = currentTime;
+            
             if (messageExchange.getRole() == Role.CONSUMER) {
                 messageExchange.setSourceId(componentConnector.getComponentNameSpace());
             }
@@ -560,9 +576,25 @@
      */
     public void processInBound(MessageExchangeImpl me) throws MessagingException {
         checkNotClosed();
+
+        // Update stats
         long currentTime = System.currentTimeMillis();
-        messagingStats.getInboundExchanges().increment();
-        messagingStats.getInboundExchangeRate().addTime(currentTime - lastReceiveTime);
+        if (container.isNotifyStatistics()) {
+            long oldCount = messagingStats.getInboundExchanges().getCount();
+            messagingStats.getInboundExchanges().increment();
+            componentConnector.getComponentMBean().firePropertyChanged(
+                    "inboundExchangeCount",
+                    new Long(oldCount),
+                    new Long(messagingStats.getInboundExchanges().getCount()));
+            double oldRate = messagingStats.getInboundExchangeRate().getAverageTime();
+            messagingStats.getInboundExchangeRate().addTime(currentTime - lastReceiveTime);
+            componentConnector.getComponentMBean().firePropertyChanged("inboundExchangeRate",
+                    new Double(oldRate),
+                    new Double(messagingStats.getInboundExchangeRate().getAverageTime()));
+        } else {
+            messagingStats.getInboundExchanges().increment();
+            messagingStats.getInboundExchangeRate().addTime(currentTime - lastReceiveTime);
+        }
         lastReceiveTime = currentTime;
 
         // If the message has been sent synchronously