You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by de...@apache.org on 2005/09/29 08:36:31 UTC

svn commit: r292393 - /webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java

Author: deepal
Date: Wed Sep 28 23:36:24 2005
New Revision: 292393

URL: http://svn.apache.org/viewcvs?rev=292393&view=rev
Log:
Handling transport errors HTTP 500

Modified:
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java?rev=292393&r1=292392&r2=292393&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java Wed Sep 28 23:36:24 2005
@@ -56,9 +56,9 @@
     private boolean chuncked = false;
 
     private String httpVersion = HTTPConstants.HEADER_PROTOCOL_11;
-    
+
     int soTimeout = HTTPConstants.DEFAULT_SO_TIMEOUT;
-    
+
     int connectionTimeout = HTTPConstants.DEFAULT_CONNECTION_TIMEOUT;
 
     public static final String HTTP_METHOD = "HTTP_METHOD";
@@ -70,7 +70,7 @@
     protected OMOutputImpl omOutput = new OMOutputImpl();
 
     protected Log log = LogFactory.getLog(getClass().getName());
-    
+
     public CommonsHTTPTransportSender() {
     } //default
 
@@ -98,16 +98,16 @@
             omOutput.setDoOptimize(msgContext.isDoingMTOM());
 
             omOutput.setCharSetEncoding(charSetEnc);
-            
+
             //Check for the REST behaviour, if you desire rest beahaviour
             //put a <parameter name="doREST" value="true"/> at the
             // server.xml/client.xml file
             EndpointReference epr = null;
             if (msgContext.getTo() != null
                     && !AddressingConstants.Submission.WSA_ANONYMOUS_URL.equals(
-                            msgContext.getTo().getAddress())
+                    msgContext.getTo().getAddress())
                     && !AddressingConstants.Final.WSA_ANONYMOUS_URL.equals(
-                            msgContext.getTo().getAddress())) {
+                    msgContext.getTo().getAddress())) {
                 epr = msgContext.getTo();
             }
 
@@ -258,8 +258,8 @@
                 if (!doingMTOM) {
                     XMLStreamWriter outputWriter =
                             XMLOutputFactory.newInstance()
-                            .createXMLStreamWriter(bytesOut,
-                                    charSetEnc);
+                                    .createXMLStreamWriter(bytesOut,
+                                            charSetEnc);
                     OMOutputImpl output = new OMOutputImpl(outputWriter);
                     output.setCharSetEncoding(charSetEnc);
                     element.serialize(output);
@@ -319,29 +319,29 @@
         }
 
         public long getContentLength() {
-                try {
-                    if (doingMTOM) {    //chagened
-                        if (chuncked) {
-                            return -1;
-                        } else {
-                            if (bytes == null) {
-                                bytes = writeBytes();
-                            }
-                            return bytes.length;
+            try {
+                if (doingMTOM) {    //chagened
+                    if (chuncked) {
+                        return -1;
+                    } else {
+                        if (bytes == null) {
+                            bytes = writeBytes();
                         }
+                        return bytes.length;
+                    }
+                } else {
+                    if (chuncked) {
+                        return -1;
                     } else {
-                        if (chuncked) {
-                            return -1;
-                        } else {
-                            if (bytes == null) {
-                                bytes = writeBytes();
-                            }
-                            return bytes.length;
+                        if (bytes == null) {
+                            bytes = writeBytes();
                         }
+                        return bytes.length;
                     }
-                } catch (AxisFault e) {
-                    return -1;
                 }
+            } catch (AxisFault e) {
+                return -1;
+            }
         }
 
         public String getContentType() {
@@ -390,7 +390,7 @@
                                 HTTPConstants.HEADER_TRANSFER_ENCODING);
                 if (transferEncoding != null
                         && HTTPConstants.HEADER_TRANSFER_ENCODING_CHUNKED.equals(
-                                transferEncoding.getValue())) {
+                        transferEncoding.getValue())) {
                     this.chuncked = true;
                 }
             } else if (
@@ -399,31 +399,31 @@
             } else {
                 throw new AxisFault(
                         "Parameter "
-                        + HTTPConstants.PROTOCOL_VERSION
-                        + " Can have values only HTTP/1.0 or HTTP/1.1");
+                                + HTTPConstants.PROTOCOL_VERSION
+                                + " Can have values only HTTP/1.0 or HTTP/1.1");
             }
         }
 
         //Get the timeout values from the configuration
         try {
-			Parameter tempSoTimeoutParam = transportOut
-					.getParameter(HTTPConstants.SO_TIMEOUT);
-			Parameter tempConnTimeoutParam = transportOut
-					.getParameter(HTTPConstants.CONNECTION_TIMEOUT);
-
-			if (tempSoTimeoutParam != null) {
-				soTimeout = Integer.parseInt((String) tempSoTimeoutParam
-						.getValue());
-			}
-
-			if (tempConnTimeoutParam != null) {
-				connectionTimeout = Integer
-						.parseInt((String) tempConnTimeoutParam.getValue());
-			}
-        
+            Parameter tempSoTimeoutParam = transportOut
+                    .getParameter(HTTPConstants.SO_TIMEOUT);
+            Parameter tempConnTimeoutParam = transportOut
+                    .getParameter(HTTPConstants.CONNECTION_TIMEOUT);
+
+            if (tempSoTimeoutParam != null) {
+                soTimeout = Integer.parseInt((String) tempSoTimeoutParam
+                        .getValue());
+            }
+
+            if (tempConnTimeoutParam != null) {
+                connectionTimeout = Integer
+                        .parseInt((String) tempConnTimeoutParam.getValue());
+            }
+
         } catch (NumberFormatException nfe) {
-			//If there's a problem log it and use the default values
-			log.error("Invalid timeout value format: not a number", nfe);
+            //If there's a problem log it and use the default values
+            log.error("Invalid timeout value format: not a number", nfe);
         }
     }
 
@@ -438,10 +438,10 @@
         httpClient = new HttpClient();
         //hostConfig handles the socket functions..
         //HostConfiguration hostConfig = getHostConfiguration(msgContext, url);
-        
+
         //Get the timeout values set in the runtime
         getTimoutValues(msgContext);
-		
+
         // SO_TIMEOUT -- timeout for blocking reads
         httpClient.getHttpConnectionManager().getParams().setSoTimeout(soTimeout);
         // timeout for initial connection
@@ -498,7 +498,7 @@
                         HTTPConstants.HEADER_EXPECT_100_Continue);
             }
         }
-        
+
         this.httpClient.executeMethod(postMethod);
 
         if (postMethod.getStatusCode() == HttpStatus.SC_OK) {
@@ -515,6 +515,15 @@
                 if(value.indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE)>=0||
                         value.indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) >=0){
                     processResponse(postMethod, msgContext);
+                }  else {
+                    /**
+                     * if the content type is  text/html;charset=utf-8
+                     */
+                    throw new AxisFault(
+                            Messages.getMessage(
+                                    "transportError",
+                                    String.valueOf(postMethod.getStatusCode()),
+                                    postMethod.getResponseBodyAsString()));
                 }
             }
         }else{
@@ -533,27 +542,27 @@
      * teh default values or the values set by teh configuration will be used
      * @param msgContext
      */
-	private void getTimoutValues(MessageContext msgContext) {
-		try {
-			// If the SO_TIMEOUT of CONNECTION_TIMEOUT is set by dynamically the
-			// override the static config
-			Integer tempSoTimeoutProperty = (Integer) msgContext
-					.getProperty(HTTPConstants.SO_TIMEOUT);
-			Integer tempConnTimeoutProperty = (Integer) msgContext
-					.getProperty(HTTPConstants.CONNECTION_TIMEOUT);
-
-			if (tempSoTimeoutProperty != null) {
-				connectionTimeout = tempSoTimeoutProperty.intValue();
-			}
-
-			if (tempConnTimeoutProperty != null) {
-				connectionTimeout = tempConnTimeoutProperty.intValue();
-			}
-		} catch (NumberFormatException nfe) {
-			//If there's a problem log it and use the default values
-			log.error("Invalid timeout value format: not a number", nfe);
-		}
-	}
+    private void getTimoutValues(MessageContext msgContext) {
+        try {
+            // If the SO_TIMEOUT of CONNECTION_TIMEOUT is set by dynamically the
+            // override the static config
+            Integer tempSoTimeoutProperty = (Integer) msgContext
+                    .getProperty(HTTPConstants.SO_TIMEOUT);
+            Integer tempConnTimeoutProperty = (Integer) msgContext
+                    .getProperty(HTTPConstants.CONNECTION_TIMEOUT);
+
+            if (tempSoTimeoutProperty != null) {
+                connectionTimeout = tempSoTimeoutProperty.intValue();
+            }
+
+            if (tempConnTimeoutProperty != null) {
+                connectionTimeout = tempConnTimeoutProperty.intValue();
+            }
+        } catch (NumberFormatException nfe) {
+            //If there's a problem log it and use the default values
+            log.error("Invalid timeout value format: not a number", nfe);
+        }
+    }
 
     private void processResponse(HttpMethodBase httpMethod, MessageContext msgContext) throws IOException {
         obatainHTTPHeaderInformation(httpMethod, msgContext);
@@ -579,7 +588,7 @@
             getMethod.setRequestHeader(
                     HTTPConstants.HEADER_CONTENT_TYPE,
                     "text/xml; charset="
-                    + MessageContext.DEFAULT_CHAR_SET_ENCODING);
+                            + MessageContext.DEFAULT_CHAR_SET_ENCODING);
         else
             getMethod.setRequestHeader(
                     HTTPConstants.HEADER_CONTENT_TYPE,
@@ -591,7 +600,7 @@
 
         //Get the timeout values set in the runtime
         getTimoutValues(msgContext);
-		
+
         // SO_TIMEOUT -- timeout for blocking reads
         httpClient.getHttpConnectionManager().getParams().setSoTimeout(soTimeout);
         // timeout for initial connection
@@ -619,7 +628,7 @@
             Header contenttypeHheader = getMethod.getResponseHeader(
                     HTTPConstants.HEADER_CONTENT_TYPE);
 
-             String value = contenttypeHheader.getValue();
+            String value = contenttypeHheader.getValue();
             if(value != null){
                 if(value.indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE)>=0||
                         value.indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) >=0){