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();
}
}