axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Amila Suriarachchi" <amilasuriarach...@gmail.com>
Subject Re: WSDL message Validation with part element
Date Thu, 26 Jul 2007 06:24:04 GMT
When you consider the soap message it only has the detail element.

<ns1:faultMessage xmlns:ns1="http://ws.example.com/types">
              <ns1:message>UserException:id is not valid</ns1:message>
           </ns1:faultMessage>

So only the element (in part ) details present in the soap message.
In Axis2 what we does is keep a map for fault element qname and fault
message name (basically generated class)

in you case client must have this map which can be populated using the wsdl.

key -> elementQName
value --> faultMessageQname

using this map client can resolve the fault message corresponding to the
received element QName.

Please see an Axis2 generated Stub.

but this method has one problem. i.e Two fault messages can refer to the
same elementQname.

eg.
<wsdl:message name="FaultMessage1">
               <wsdl:part name="FaultMessage" element="tns:faultMessage"/>
       </wsdl:message>
<wsdl:message name="FaultMessage2">
               <wsdl:part name="FaultMessage" element="tns:faultMessage"/>
       </wsdl:message>

for this case we can't use the above technique( Acutally Axis2 does not
support this as well)
for this case we have to use the fault action to map the fault to correct
fault message.

Amila.


On 7/26/07, jaypee_p <p.jayaprakash@gmail.com> wrote:
>
>
> My consumer is SAP XI client. Below is the sequence for fault message is
> processed in XI
>
> XI Sequence
>
> 1.First step is to identify the wsdl:Message element with the namespace
> http://ws.example.com/service
>
> 2.The next step is to go to the part element in
> http://ws.example.com/types
> and map the fault message.
>
> To be simple in your case http://ws.example.com/service is the namespace
> of
> Fault Message and http://ws.example.com/types is the namespace of the
> fault
> message payload (Fault XML Message).
>
> So even though the Fault XML Message has the namespace
> http://ws.example.com/types ,but if the fault namespace doesnot come with
> http://ws.example.com/service then Fault will not be triggered and
> processed
> in XI.
>
> My axis server is sending a fault response like below.
>
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/
> "
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>    <soapenv:Body>
>       <soapenv:Fault>
>          <faultcode>soapenv:Server.generalException</faultcode>
>          <faultstring/>
>          <detail>
>             <ns1:faultMessage xmlns:ns1="http://ws.example.com/types">
>                <ns1:message>UserException:id is not valid</ns1:message>
>             </ns1:faultMessage>
>             <ns2:exceptionName
> xmlns:ns2="http://xml.apache.org/axis/">com.example.ws.types.FaultMessage
> </ns2:exceptionName>
>             <ns3:hostname
> xmlns:ns3="http://xml.apache.org/axis/">mymachine</ns3:hostname>
>          </detail>
>       </soapenv:Fault>
>    </soapenv:Body>
> </soapenv:Envelope>
>
> They are facing the error like "Not able to match the message namespace
> from
> the fault response with the namespace "http://ws.example.com/service". "
>
> How to resolve this?
>
> --
> View this message in context:
> http://www.nabble.com/WSDL-message-Validation-with-part-element-tf4140600.html#a11804216
> Sent from the Axis - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>


-- 
Amila Suriarachchi,
WSO2 Inc.

Mime
View raw message