Author: supun
Date: Fri Sep 17 05:46:28 2010
New Revision: 997984
URL: http://svn.apache.org/viewvc?rev=997984&view=rev
Log:
SYNAPSE-683
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointFactory.java
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointFactory.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointFactory.java?rev=997984&r1=997983&r2=997984&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointFactory.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/config/xml/endpoints/DynamicLoadbalanceEndpointFactory.java
Fri Sep 17 05:46:28 2010
@@ -29,6 +29,9 @@ import org.apache.synapse.config.xml.end
import org.apache.synapse.core.LoadBalanceMembershipHandler;
import org.apache.synapse.endpoints.DynamicLoadbalanceEndpoint;
import org.apache.synapse.endpoints.Endpoint;
+import org.apache.synapse.endpoints.dispatch.Dispatcher;
+import org.apache.synapse.endpoints.dispatch.SoapSessionDispatcher;
+import org.apache.synapse.endpoints.dispatch.HttpSessionDispatcher;
import org.apache.synapse.endpoints.algorithms.LoadbalanceAlgorithm;
import javax.xml.namespace.QName;
@@ -80,7 +83,37 @@ public class DynamicLoadbalanceEndpointF
loadbalanceEndpoint.setName(name.getAttributeValue());
}
- //TODO: Handle session affinity
+ // get the session for this endpoint
+ OMElement sessionElement = epConfig.
+ getFirstChildWithName(new
QName(SynapseConstants.SYNAPSE_NAMESPACE, "session"));
+ if (sessionElement != null) {
+
+ OMElement sessionTimeout =
sessionElement.getFirstChildWithName(
+ new QName(SynapseConstants.SYNAPSE_NAMESPACE,
"sessionTimeout"));
+
+ if (sessionTimeout != null) {
+ try {
+ loadbalanceEndpoint.setSessionTimeout(Long.parseLong(
+ sessionTimeout.getText().trim()));
+ } catch (NumberFormatException nfe) {
+ handleException("Invalid session timeout value : " +
sessionTimeout.getText());
+ }
+ }
+
+ String type = sessionElement.getAttributeValue(new
QName("type"));
+
+ if (type.equalsIgnoreCase("soap")) {
+ Dispatcher soapDispatcher = new SoapSessionDispatcher();
+ loadbalanceEndpoint.setDispatcher(soapDispatcher);
+
+ } else if (type.equalsIgnoreCase("http")) {
+ Dispatcher httpDispatcher = new HttpSessionDispatcher();
+ loadbalanceEndpoint.setDispatcher(httpDispatcher);
+
+ }
+
+ loadbalanceEndpoint.setSessionAffinity(true);
+ }
// set if failover is turned off
String failover = loadbalanceElement.getAttributeValue(new
QName("failover"));