RE: client program doesn't get exception for a http 500 staus response

Martin Gainty <[email protected]>
Newsgroups gmane.text.xml.axis.user
Message-ID <[email protected]>
                                                                                                  


Date: Thu, 6 Aug 2015 17:09:07 +0800
Subject: client program doesn't get exception for a http 500 staus response
From: [email protected]
To: [email protected]

I'm working with axis2 1.5.1, and try to use it as webservice client.when I try to invoke a oneway webservice operation, I found if the server return http 500, I didn't got any exception in client side.but for other status code, like, http 404, I can get an exception.I made some study on axis2 source code.and found the logic in following method, org.apache.axis2.transport.http.HTTPSender.handleResponse(MessageContext, HttpMethodBase):
for  HttpStatus.SC_INTERNAL_SERVER_ERROR || HttpStatus.SC_BAD_REQUEif the operation is 2 way operation, set ProcessingFault to true for income message.but for one way operation, there is no special action, except just try to process the response.since 1 way operation doesn't expected a response soap message, the response seems was discarded.I want to know is there any special consideration for such behavior?should't a exception be thrown out when response status code is 500 and operation is of  one way?

MG>One way-operation in the west means as you soon as request arrives at destination you never return
MG>Is One-way-operation classified differently in the East?

I inline the method I mentioned for convenient review.in addition, I checked source of axis2 1.6, and found the behavior is as the same.  


     * Used to handle the HTTP Response     *     * @param msgContext - The MessageContext of the message     * @param method     - The HTTP method used     * @throws IOException - Thrown in case an exception occurs     */    private void handleResponse(MessageContext msgContext,                                HttpMethodBase method) throws IOException {        int statusCode = method.getStatusCode();        log.trace("Handling response - " + statusCode);        if (statusCode == HttpStatus.SC_OK) {            processResponse(method, msgContext);        } else if (statusCode == HttpStatus.SC_ACCEPTED) {        } else if (statusCode == HttpStatus.SC_INTERNAL_SERVER_ERROR ||                statusCode == HttpStatus.SC_BAD_REQUEST) {            Header contenttypeHeader =                    method.getResponseHeader(HTTPConstants.HEADER_CONTENT_TYPE);            String value = null;            if (contenttypeHeader != null) {                value = contenttypeHeader.getValue();            }             OperationContext opContext = msgContext.getOperationContext();            if(opContext!=null){                MessageContext inMessageContext =                        opContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);                if(inMessageContext!=null){                    inMessageContext.setProcessingFault(true);                }            }            if (value != null) {
                processResponse(method, msgContext);            }            //should't a exception be thrown out here in a else branch like            //else{                    // throw new AxisFault(Messages.getMessage("transportError", String.valueOf(statusCode),  method.getStatusText()));            //}


            Object isTransportNonBlocking = msgContext.getProperty(                    MessageContext.TRANSPORT_NON_BLOCKING);            if (isTransportNonBlocking != null && (Boolean)isTransportNonBlocking) {                throw new AxisFault(Messages.getMessage("transportError",                        String.valueOf(statusCode),                        method.getStatusText()));            }        } else {            throw new AxisFault(Messages.getMessage("transportError",                                                    String.valueOf(statusCode),                                                    method.getStatusText()));        }    }thanksysliu
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.