You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2014/05/01 09:22:20 UTC

git commit: Fetched incoming request port from axis2 message context property TARGET_HOST

Repository: incubator-stratos
Updated Branches:
  refs/heads/master 10bb2e15a -> 65b4f4f28


Fetched incoming request port from axis2 message context property TARGET_HOST


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/65b4f4f2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/65b4f4f2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/65b4f4f2

Branch: refs/heads/master
Commit: 65b4f4f28887008e46b21a5f4faab792e6a95672
Parents: 10bb2e1
Author: Imesh Gunaratne <im...@wso2.com>
Authored: Thu May 1 12:52:05 2014 +0530
Committer: Imesh Gunaratne <im...@wso2.com>
Committed: Thu May 1 12:52:05 2014 +0530

----------------------------------------------------------------------
 .../TenantAwareLoadBalanceEndpoint.java         | 34 +++++++++++++-------
 1 file changed, 23 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/65b4f4f2/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 c426a1b..709ad10 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
@@ -233,7 +233,7 @@ public class TenantAwareLoadBalanceEndpoint extends org.apache.synapse.endpoints
             Port outgoingPort = findOutgoingPort(member, incomingPort);
             if (outgoingPort == null) {
                 if (log.isErrorEnabled()) {
-                    log.error(String.format("Could not find port for proxy port %d in member %s", incomingPort,
+                    log.error(String.format("Could not find the port for proxy port %d in member %s", incomingPort,
                             member.getMemberId()));
                 }
                 throwSynapseException(synCtx, 500, "Internal server error");
@@ -265,19 +265,29 @@ public class TenantAwareLoadBalanceEndpoint extends org.apache.synapse.endpoints
      * @throws MalformedURLException
      */
     private int findIncomingPort(MessageContext synCtx) throws MalformedURLException {
+        org.apache.axis2.context.MessageContext msgCtx =
+                ((Axis2MessageContext) synCtx).getAxis2MessageContext();
         try {
-            URL url = new URL(extractUrl(synCtx));
-            if(log.isDebugEnabled()) {
-                log.debug("Incoming request port found: " + url.getPort());
+            Map headerMap = (Map) msgCtx.getProperty(org.apache.axis2.context.MessageContext.TRANSPORT_HEADERS);
+            if (headerMap != null) {
+                String hostHeader = (String) headerMap.get(HTTP.TARGET_HOST);
+                int index = hostHeader.indexOf(':');
+                if (index != -1) {
+                    int port = Integer.parseInt(hostHeader.trim().substring(index + 1));
+                    if (log.isDebugEnabled()) {
+                        log.debug("Incoming request port found: " + port);
+                    }
+                    return port;
+                }
             }
-            return url.getPort();
         }
-        catch (MalformedURLException e) {
+        catch (Exception e) {
             if(log.isErrorEnabled()) {
-                log.error("Could not extract port from incoming request", e);
+                log.error("Could not find incoming request port");
             }
-            throw e;
+            throwSynapseException(synCtx, 500, "Internal server error");
         }
+        return -1;
     }
 
     /***
@@ -290,10 +300,12 @@ public class TenantAwareLoadBalanceEndpoint extends org.apache.synapse.endpoints
     private Port findOutgoingPort(Member member, int incomingPort) throws MalformedURLException {
         if((member != null) && (member.getPorts() != null)) {
             Port outgoingPort = member.getPort(incomingPort);
-            if(log.isDebugEnabled()) {
-                log.debug("Outgoing request port found: " + outgoingPort.getValue());
+            if(outgoingPort != null) {
+                if (log.isDebugEnabled()) {
+                    log.debug("Outgoing request port found: " + outgoingPort.getValue());
+                }
+                return outgoingPort;
             }
-            return outgoingPort;
         }
         return null;
     }