Repository: incubator-stratos Updated Branches: refs/heads/master aa27fba8d -> 83905b2d3
fixing lb port mapping handling issue Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/83905b2d Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/83905b2d Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/83905b2d Branch: refs/heads/master Commit: 83905b2d34025df6ba1bada8ee230249a3cd62a5 Parents: aa27fba Author: Nirmal Fernando <[email protected]> Authored: Sat May 17 07:06:55 2014 +0530 Committer: Nirmal Fernando <[email protected]> Committed: Sat May 17 07:06:55 2014 +0530 ---------------------------------------------------------------------- .../TenantAwareLoadBalanceEndpoint.java | 30 ++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/83905b2d/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java index 9e570fc..0dd0bd9 100644 --- a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java +++ b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/endpoint/TenantAwareLoadBalanceEndpoint.java @@ -78,6 +78,8 @@ public class TenantAwareLoadBalanceEndpoint extends org.apache.synapse.endpoints /* Sessions time out interval */ private long sessionTimeout = -1; + + private final static Pattern LAST_INT_PATTERN = Pattern.compile("[^0-9]+([0-9]+)$"); @Override public void init(SynapseEnvironment synapseEnvironment) { @@ -154,8 +156,17 @@ public class TenantAwareLoadBalanceEndpoint extends org.apache.synapse.endpoints private void setupLoadBalancerContextProperties(MessageContext synCtx, org.apache.axis2.clustering.Member currentMember) { String lbHostName = extractTargetHost(synCtx); org.apache.axis2.context.MessageContext axis2MsgCtx = ((Axis2MessageContext) synCtx).getAxis2MessageContext(); - TransportInDescription httpTransportIn = axis2MsgCtx.getConfigurationContext().getAxisConfiguration().getTransportIn("http"); - TransportInDescription httpsTransportIn = axis2MsgCtx.getConfigurationContext().getAxisConfiguration().getTransportIn("https"); + + String httpTransportName = "http", httpsTransportName = "https"; + String transportId = getTransportId(extractIncomingTransport(synCtx)); + + if (transportId != null) { + httpsTransportName = httpsTransportName.concat(transportId); + httpTransportName = httpTransportName.concat(transportId); + } + + TransportInDescription httpTransportIn = axis2MsgCtx.getConfigurationContext().getAxisConfiguration().getTransportIn(httpTransportName); + TransportInDescription httpsTransportIn = axis2MsgCtx.getConfigurationContext().getAxisConfiguration().getTransportIn(httpsTransportName); String lbHttpPort = (String) httpTransportIn.getParameter("port").getValue(); String lbHttpsPort = (String) httpsTransportIn.getParameter("port").getValue(); String clusterId = currentMember.getProperties().getProperty(Constants.CLUSTER_ID); @@ -165,6 +176,16 @@ public class TenantAwareLoadBalanceEndpoint extends org.apache.synapse.endpoints synCtx.setProperty(Constants.LB_HTTPS_PORT, lbHttpsPort); synCtx.setProperty(Constants.CLUSTER_ID, clusterId); } + + protected String getTransportId(String incomingTransportName) { + // pattern match and find the transport id. + Matcher matcher = LAST_INT_PATTERN.matcher(incomingTransportName); + if (matcher.find()) { + return matcher.group(1); + } + + return null; + } /** @@ -506,6 +527,11 @@ public class TenantAwareLoadBalanceEndpoint extends org.apache.synapse.endpoints org.apache.axis2.context.MessageContext axis2MessageContext = ((Axis2MessageContext) synCtx).getAxis2MessageContext(); return axis2MessageContext.getTransportIn().getName(); } + + private String extractIncomingTransport(MessageContext synCtx) { + org.apache.axis2.context.MessageContext axis2MessageContext = ((Axis2MessageContext) synCtx).getAxis2MessageContext(); + return axis2MessageContext.getIncomingTransportName(); + } /** * @param to get an endpoint to send the information
