[ 
https://issues.apache.org/jira/browse/AXIS2-6091?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17951257#comment-17951257
 ] 

Robert Lazarski edited comment on AXIS2-6091 at 5/13/25 6:09 PM:
-----------------------------------------------------------------

[~jwthomas] you are referring to the server side in your latest comments - 
correct? AxisServlet? 

Just trying to keep focused on your problem, since the HTTPSender problems in 
this issue were client side. 

I reviewed your question further and I would be inclined to support some 
optional param in axis2.xml that defines something different than HTTP 500. 

You are kind of my barometer of the part of the community that needs the most 
help - on a branch, trying to get on current releases. So, I'm flexible on what 
you need. 


was (Author: robertlazarski):
[~jwthomas] you are referring to the server side in your latest comments - 
correct? AxisServlet? 

Just trying to keep focused on your problem, since the HTTPSender problems in 
this issue were client side. 

I reviewed your question further and I would be inclined to support some 
optional param in axis2.xml that defines something different than HTTP 500. 

You are kind of my barometer of the part of community that needs the most help 
- on a branch, trying to get on current releases. So, I'm flexible on what you 
need. 

> Problem handling HTTP Response in OutInAxisOperationClient / TransportUtils
> ---------------------------------------------------------------------------
>
>                 Key: AXIS2-6091
>                 URL: https://issues.apache.org/jira/browse/AXIS2-6091
>             Project: Axis2
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 2.0.0
>            Reporter: Jeff Thomas
>            Priority: Major
>             Fix For: 2.0.1
>
>
> I am testing upgrading to Axis2 2.0.0 (and associated Axiom 2.0.0 upgrade).
> I am seeing a processing error when a HTTP 404 is received by an 
> OutInAxisOperationClient when an endpoint is not available (target 
> application not running) but the Tomcat instance is running.
> The returned response obtained from the input-stream is:
>  
> {code:java}
> <!doctype html>
> <html lang="en">
>     <head>
>         <title>HTTP Status 404 – Not Found</title>
>         <style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} 
> h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 
> {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} 
> .line {height:1px;background-color:#525D76;border:none;}</style>
>     </head>
>     <body>
>         <h1>HTTP Status 404 – Not Found</h1>
>         <hr class="line"/>
>         <p>
>             <b>Type</b> Status Report</p>
>         <p>
>             <b>Description</b> The origin server did not find a current 
> representation for the target resource or is not willing to disclose that one 
> exists.</p>
>         <hr class="line"/>
>         <h3>Apache Tomcat/11.0.5</h3>
>     </body>
> </html> {code}
> The stacktrace for the fault is as follows:
>  
>  
> {code:java}
> org.apache.axis2.AxisFault: org.apache.axiom.core.stream.StreamException: 
> com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'd' (code 
> 100) after '<!' (malformed comment?)
>  at [row,col {unknown-source}]: [1,3]
>     at org.apache.axis2.AxisFault.makeFault(AxisFault.java:431) 
> ~[axis2-kernel-2.0.0.2-PWC.jar:2.0.0.2-PWC]
>     at 
> org.apache.axis2.kernel.TransportUtils.createSOAPMessage(TransportUtils.java:116)
>  ~[axis2-kernel-2.0.0.2-PWC.jar:2.0.0.2-PWC]
>     at 
> org.apache.axis2.kernel.TransportUtils.createSOAPMessage(TransportUtils.java:68)
>  ~[axis2-kernel-2.0.0.2-PWC.jar:2.0.0.2-PWC]
>     at 
> org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:347)
>  ~[axis2-kernel-2.0.0.2-PWC.jar:2.0.0.2-PWC]
>  {code}
> Ultimately it lands in this chain:
>  
>  * OutInAxisOperationClient#processResponse ->
>  * TransportUtils#createSoapMessage ->
>  * ...
>  * TransportUtils#createDefaultDocumentElement
> It lands here because it cannot find any configured MessageBuilder for the 
> content-type "text/html".
> Here it comes in this code:
>  
> {code:java}
> private static OMElement createDefaultDocumentElement(MessageContext 
> msgContext,
>                                                       InputStream inStream, 
> String type) {
>     OMElement documentElement;
>     if (msgContext.isDoingREST()) {
>         if (log.isDebugEnabled()) {
>             log.debug("Could not find a Builder for type (" + type + ").  
> Using REST.");
>         }
>         OMXMLParserWrapper builder = BuilderUtil.createPOXBuilder(inStream, 
> null);
>         documentElement = builder.getDocumentElement();
>     } else {
>         // FIXME making soap defualt for the moment..might effect the
>         // performance
>         if (log.isDebugEnabled()) {
>             log.debug("Could not find a Builder for type (" + type + ").  
> Using SOAP.");
>         }
>         String charSetEnc = (String) msgContext
>                 .getProperty(Constants.Configuration.CHARACTER_SET_ENCODING);
>         SOAPModelBuilder builder = 
> BuilderUtil.createSOAPModelBuilder(inStream, charSetEnc);
>         documentElement = builder.getDocumentElement();
>     }
>     return documentElement;
> } {code}
>  
> The '{{{}isDoingRest{}}}' returns _false_ and the {{contentType}} is 
> 'text/html' and encoding 'UTF-8'.
> The exception is thrown trying to parse the HTML to SOAP:
> {code:java}
> documentElement = builder.getDocumentElement(); {code}
> Possibly this is also related to the code in {{HTTPSender#send}} for handling 
> 404/500 HTTP responses?
>  
>  
> {code:java}
> else if (statusCode == HttpStatus.SC_INTERNAL_SERVER_ERROR
>                            || statusCode == HttpStatus.SC_BAD_REQUEST || 
> statusCode == HttpStatus.SC_NOT_FOUND) {
>                     processResponse = true;
>                     fault = true;
>                 }{code}
> We would really like to get off our custom forks of Axis2/Axiom/Rampart - or 
> at least as close to the current release as possible but this is currently a 
> blocker for us.  Our monitoring continuously polls endpoints that may or may 
> not be available and this generates loads of errors / stacktraces in our logs.
>  
> I enabled the following parameter as a test to use the "UnknownBuilder"
>  
> {code:java}
> <parameter name="useDefaultFallbackBuilder">true</parameter> {code}
> I didn't get the Axiom exception, but it only leads to a follow-up exception:
>  
>  
> {code:java}
> java.lang.IllegalArgumentException: The MessageContext does not have an 
> associated SOAPFault.
>     at 
> org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:533) 
> ~[axis2-kernel-2.0.0.2-PWC.jar:2.0.0.2-PWC]
>     at 
> org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:368)
>  ~[axis2-kernel-2.0.0.2-PWC.jar:2.0.0.2-PWC]
>  {code}
> So all in all, if I am not analyzing this incorrectly, Axis2 doesn't seem to 
> be handling the case where an endpoint returns a 404/500 response that is 
> HTML and not SOAP (and probably other HTTP status as well (400 BAD_REQUEST, 
> 401 UNAUTHORIZED, 403 FORBIDDEN, 418 (I am a teapot! :P), ...).
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org
For additional commands, e-mail: java-dev-h...@axis.apache.org

Reply via email to