axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Xavi Drudis Ferran (JIRA)" <>
Subject [jira] Created: (AXIS2-3771) POX literal fault is not detected by client
Date Mon, 28 Apr 2008 16:45:56 GMT
POX literal fault is not detected by client 

                 Key: AXIS2-3771
             Project: Axis 2.0 (Axis2)
          Issue Type: Bug
          Components: transports
    Affects Versions: 1.3
         Environment: Debian etch. JVM 1.4 from blackdown (64 bits) 
            Reporter: Xavi Drudis Ferran
            Priority: Minor

Sorry if this is not a bug, I may well have misunderstood something. I tend to think it's
a bug because an exception 
in the server does not reach the client when both use code generated by WSDL2Java, but maybe
what I'm trying can't be done. 

I have to code a client for a webservice that answers with a xml response when accessed through
a GET with parameters. 
The returned xml has a certain root element when things work and otherwise the root element
is <error description="..."/> 
So I defined a wsdl for the web service with literal response and a literal fault that describe
the xml issued on 
success and error respectively. 

I generated a client and a server for tests (the real server is going to 
be by a third partly, so I have to make my test server behave as close as
the specification of the third party server as I can). The server seems to work as specified
(after some configuration tweaking for REST and namespacelessness). 

The client works in case of success, but when the server skeleton throws the ERRORMessage
exception (generated by WSDL2Java) 
an <error description="..."/> response gets to the client, and then the client throws
an exception like this: 

java.lang.IllegalArgumentException: The MessageContext does not have an associated SOAPFault.

By a quick look at the code it would seem that because it's a REST client (POX, actually,
I think), the  OutInAxisOperationClient.handleResponse method has to make up an envelope it
didn't get, and calls 


and with the generated envelope it somehow detects there's a fault and calls


to throw the corresponding exception (which should be the ERRORMessage 
generated by WSDL2Java). 

But it seems to be unable to see it's an ERRORMessage the exception it should
create and throw. 

Might it be because TransportUtils.createSOAPMessage(responseMessageContext)
calls (indirectly) createSOAPEnvelope with a document created from 
the <error description="..."/> response, and so it treats the fault as the
document, and later the getInboundFaultFromMessageContext cannot find 
the fault because it has been mistakenly taken for the body ? 

In other words, the code that parses a REST response in the client 
does not seem (at first glance) to expect a literal fault as declared in 
the wsdl when generating a fake envelope for the rest of axis2 to 
treat as if it where a SOAP response. Should this be changed or 
it's not a covered use case and so it should remain as is?.

Sorry if I don't give enough detail, I thought of sending code, but 
maybe it'd be best to build a simpler example than what I have (modifying
the getVersion sample, or whatever), also helping to isolate the issue. 
I may do it later this week if you think it's worthwhile. 

I'm just sending this in order to know whether what I try to do 
makes sense and should be further investigated or is just nonsense 
and I should learn how to use Axis2 better. Wasn't sure whether I 
should use JIRA or a mailing list, but thought we can close the bug if
it's not one.  

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message