Author: mrdon
Date: Mon Mar 28 14:58:18 2005
New Revision: 159328

URL: http://svn.apache.org/viewcvs?view=rev&rev=159328
Log:
Adding better support for load balancers that use different ports
than the server by pulling the port number, optionally, from the
HTTP header "Head" if available.

PR: 33238 
Patch supplied by: javier crespo <[EMAIL PROTECTED]>

Modified:
    struts/taglib/trunk/src/java/org/apache/struts/taglib/html/BaseTag.java

Modified: 
struts/taglib/trunk/src/java/org/apache/struts/taglib/html/BaseTag.java
URL: 
http://svn.apache.org/viewcvs/struts/taglib/trunk/src/java/org/apache/struts/taglib/html/BaseTag.java?view=diff&r1=159327&r2=159328
==============================================================================
--- struts/taglib/trunk/src/java/org/apache/struts/taglib/html/BaseTag.java 
(original)
+++ struts/taglib/trunk/src/java/org/apache/struts/taglib/html/BaseTag.java Mon 
Mar 28 14:58:18 2005
@@ -19,6 +19,7 @@
 package org.apache.struts.taglib.html;
 
 import java.io.IOException;
+import java.util.StringTokenizer;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.jsp.JspException;
@@ -76,13 +77,28 @@
     public int doStartTag() throws JspException {
         HttpServletRequest request = (HttpServletRequest) 
pageContext.getRequest();
         String serverName = (this.server == null) ? request.getServerName() : 
this.server;
-        
-        String baseTag =
-            renderBaseElement(
-                request.getScheme(),
-                serverName,
-                request.getServerPort(),
-                request.getRequestURI());
+    
+        int port = request.getServerPort();
+        String headerHost = request.getHeader("Host");
+        if (headerHost != null) {
+            StringTokenizer tokenizer = new StringTokenizer(headerHost,":");
+            serverName = tokenizer.nextToken();
+            if (tokenizer.hasMoreTokens()) {
+                String portS = tokenizer.nextToken();
+                try {
+                    port = Integer.parseInt(portS);
+                } catch (Exception e){
+                    port = 80;
+                }
+            } else {
+                port = 80;
+            }
+        }
+        String baseTag = renderBaseElement(
+                            request.getScheme(), 
+                            serverName,
+                            port, 
+                            request.getRequestURI());    
 
         JspWriter out = pageContext.getOut();
         try {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to