[
http://issues.apache.org/jira/browse/AXIS2-741?page=comments#action_12411979 ]
Ali Sadik Kumlali commented on AXIS2-741:
-----------------------------------------
Shouldn't we expect the AxisServlet to send HTTP 200 or HTTP 202 and empty
content over the first connection and send the actual error over the second?
Otherwise don't we treat business exception as transport exception?
If yes, catch block in doPost () method of AxisServlet should be changed as
following:
...
} catch (AxisFault e) {
log.debug(e);
if (msgContext != null) {
try {
res.setContentType("text/xml; charset="
+
msgContext.getProperty(MessageContext.CHARACTER_SET_ENCODING));
res.setStatus(HttpServletResponse.SC_ACCEPTED); //
handleFault(msgContext, out, e);
} catch (AxisFault e2) {
log.info(e2);
}
} else {
throw new ServletException(e);
}
}
But, when we do this, client side throws "org.apache.axis2.AxisFault: Time out
while waiting for the server to send the response". I don't know why this
happen, since MessageContext.TRANSPORT_NON_BLOCKING property of message context
is set to Boolean.TRUE at line 273 of OutInAxisOperation class.
> "Transport error 500" for EchoBlockingDualClient & echoF
> --------------------------------------------------------
>
> Key: AXIS2-741
> URL: http://issues.apache.org/jira/browse/AXIS2-741
> Project: Apache Axis 2.0 (Axis2)
> Type: Bug
> Versions: 1.0
> Environment: Win 2K Pro, JDK 1.4, Tomcat 5.5
> Reporter: Ali Sadik Kumlali
> Attachments: message_flow.txt
>
> When I use EchoBlockingDualClient to invoke echoF service which throws
> AxisFault, I run into a strange(?) situation.
> Server returnes back an error through the *first* channel. Error says
> "Transport error 500 . Error Message is <html><head><title>Apache
> Tomcat/5.5.14 - Error report...". Then it sends the actual error over the
> *second* channel.
> When I look at the server logs, there is only one trace that indicates the
> AxisFault error thrown by echoF. There seems no transport related errors.
> However, client catches *only* the first error and writes it down to the
> console. Then, it throws another exception that says
> "org.apache.axis2.AxisFault: Time out while waiting for the server to send
> the response"
> I tried followings:
> - Throwing XMLStreamException instead of AxisFault for conforming the
> original echo sample.
> - Adding FaultTo EPR to the request.
> Neither of them worked.
> Since separate listener case is very important, I beleive this is actually a
> blocker issue. (If I'm not missing something)
> --------------------------------------------------------------------
> public OMElement echoF(OMElement element) throws AxisFault {
> throw new AxisFault("MyFault message", "MyFaultCode");
> }
> --------------------------------------------------------------------
> - Transport error 500 . Error Message is <html><head><title>Apache
> Tomcat/5.5.14 - Error report</title><style><!--H1
> {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}
> H2
> {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;}
> H3
> {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;}
> BODY
> {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;}
> B
> {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;}
> P
> {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A
> {color : black;}A.name {color : black;}HR {color : #525D76;}--></style>
> </head><body><h1>HTTP Status 500 - </h1><HR size="1"
> noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b>
> <u></u></p><p><b>description</b> <u>The server encountered an internal
> error () that prevented it from fulfilling this request.</u></p><HR
> size="1" noshade="noshade"><h3>Apache Tomcat/5.5.14</h3></body></html>;
> nested exception is:
> ...
> org.apache.axis2.AxisFault: Time out while waiting for the server to
> send the response[SimpleHTTPServer] Stop called
> at
> org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:448)
> at
> org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:399)
> at
> userguide.clients.EchoBlockingDualClient.main(EchoBlockingDualClient.java:54)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira