Author: uswick
Date: Fri Jul  1 14:07:06 2011
New Revision: 1141945

URL: http://svn.apache.org/viewvc?rev=1141945&view=rev
Log:
including dynamic loadbalancer endpoint  changes SYNAPSE-770 + gracefully 
handling registering JMX MBeans for endpoints 

Modified:
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/DynamicLoadbalanceEndpoint.java
    
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/dispatch/AbstractDispatcher.java

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java?rev=1141945&r1=1141944&r2=1141945&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/AbstractEndpoint.java
 Fri Jul  1 14:07:06 2011
@@ -86,6 +86,8 @@ public abstract class AbstractEndpoint e
     /** The Sequence name associated with the endpoint*/
     protected String errorHandler = null;
 
+    private boolean enableMBeanStats = true;
+
     protected AbstractEndpoint() {
         log = LogFactory.getLog(this.getClass());
     }
@@ -166,8 +168,24 @@ public abstract class AbstractEndpoint e
 
     public void setName(String endpointName) {
         this.endpointName = endpointName;
-        metricsMBean = new EndpointView(endpointName, this);
-        MBeanRegistrar.getInstance().registerMBean(metricsMBean, "Endpoint", 
endpointName);
+        if (enableMBeanStats) {
+            if(endpointName != null && !"".equals(endpointName.trim())){
+                //we skip stat collection for endpoints with no defined name
+                log.warn("Endpoint Name not found. Skipped JMX statistics 
collection for this endpoint");
+                return;
+            }
+            metricsMBean = new EndpointView(endpointName, this);
+            MBeanRegistrar.getInstance().registerMBean(metricsMBean, 
"Endpoint", endpointName);
+        }
+    }
+
+    /**
+     * set whether this endpoint needs to be registered for JMX Mbeans. some 
endpoints may not need
+     * to register under MBean and setting false will cut the additional 
overhead.
+     * @param flag set true/false
+     */
+    public void setEnableMBeanStats(boolean flag){
+        enableMBeanStats = flag;
     }
 
     //----------------------- default method implementations and common code 
-----------------------
@@ -548,7 +566,9 @@ public abstract class AbstractEndpoint e
     }
 
     public void destroy() {
-        MBeanRegistrar.getInstance().unRegisterMBean("Endpoint", endpointName);
+        if (enableMBeanStats) {
+            MBeanRegistrar.getInstance().unRegisterMBean("Endpoint", 
endpointName);
+        }
         this.initialized = false;
     }
 

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/DynamicLoadbalanceEndpoint.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/DynamicLoadbalanceEndpoint.java?rev=1141945&r1=1141944&r2=1141945&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/DynamicLoadbalanceEndpoint.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/DynamicLoadbalanceEndpoint.java
 Fri Jul  1 14:07:06 2011
@@ -42,6 +42,7 @@ import java.net.URL;
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Set;
+import java.util.UUID;
 
 /**
  * Represents a dynamic load balance endpoint. The application membership is 
not static,
@@ -213,6 +214,7 @@ public class DynamicLoadbalanceEndpoint 
         }
 
         Endpoint endpoint = getEndpoint(to, synCtx);
+        faultHandler.setCurrentEp(endpoint);
         if (isSessionAffinityBasedLB() && newSession) {
             prepareEndPointSequence(synCtx, endpoint);
             
synCtx.setProperty(SynapseConstants.PROP_SAL_ENDPOINT_CURRENT_MEMBER, 
currentMember);
@@ -288,7 +290,8 @@ public class DynamicLoadbalanceEndpoint 
      */
     private Endpoint getEndpoint(EndpointReference to, MessageContext synCtx) {
         AddressEndpoint endpoint = new AddressEndpoint();
-        endpoint.setName("DynamicLoadBalanceAddressEndpoint-" + Math.random());
+        endpoint.setEnableMBeanStats(false);
+        endpoint.setName("DYNAMIC_LOADBALANCE_EP_" + UUID.randomUUID());
         EndpointDefinition definition = new EndpointDefinition();
         definition.setReplicationDisabled(true);
         definition.setAddress(to.getAddress());
@@ -308,6 +311,7 @@ public class DynamicLoadbalanceEndpoint 
 
         private EndpointReference to;
         private Member currentMember;
+        private Endpoint currentEp;
 
         public void setCurrentMember(Member currentMember) {
             this.currentMember = currentMember;
@@ -318,6 +322,10 @@ public class DynamicLoadbalanceEndpoint 
         }
 
         public void onFault(MessageContext synCtx) {
+            //cleanup endpoint if exists
+            if(currentEp != null){
+                currentEp.destroy();
+            }
             if (currentMember == null) {
                 return;
             }
@@ -339,5 +347,9 @@ public class DynamicLoadbalanceEndpoint 
             }
             sendToApplicationMember(synCtx, currentMember, true);
         }
+
+        public void setCurrentEp(Endpoint currentEp) {
+            this.currentEp = currentEp;
+        }
     }
 }

Modified: 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/dispatch/AbstractDispatcher.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/dispatch/AbstractDispatcher.java?rev=1141945&r1=1141944&r2=1141945&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/dispatch/AbstractDispatcher.java
 (original)
+++ 
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/endpoints/dispatch/AbstractDispatcher.java
 Fri Jul  1 14:07:06 2011
@@ -95,7 +95,7 @@ public abstract class AbstractDispatcher
 
                     for(String sessionId : sessionIds){
                         if(sessionId != null && 
sessionId.indexOf("JSESSIONID") != -1){
-                            return sessionId;
+                            return sessionId.trim();
                         }
                     }
 


Reply via email to