Hi,

I was testing the http wsdl-first example that comes with SM 3.3.  To
clarify my question, why doesn't the <GetPersonResponse> element of the soap
response contain a namespace prefix and only comes with a default namespace?

here is an except from the response body:
<GetPersonResponse xmlns="http://servicemix.apache.org/samples/wsdl-first";>
   ....
</GetPersonResponse>

what I was expecting is: (notice the "wsdl" prefix).
<wsdl:GetPersonResponse
xmlns:wsdl="http://servicemix.apache.org/samples/wsdl-first";>
   ....
</wsdl:GetPersonResponse>

I'm comparing this with the request body that soapUI generated for me based
on the wsdl where the <GetPerson> element comes prefixed with a namespace:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope";
 xmlns:wsdl="http://servicemix.apache.org/samples/wsdl-first";>
    <soap:Header/>
    <soap:Body>
       <wsdl:GetPerson>
          <wsdl:personId>?</wsdl:personId>
       </wsdl:GetPerson>
    </soap:Body>
</soap:Envelope>

This brings me to my question why the <GetPersonResponse> is not prefixed
with the "wsdl" namespace in the response considering both the GetPerson and
GetPersonResponse element in the wsdl has the same targetNamespace.

excerpt from person.wsdl:
<xsd:schema
targetNamespace="http://servicemix.apache.org/samples/wsdl-first/types";
                            elementFormDefault="qualified">
                        <xsd:element name="GetPerson">
                          <xsd:complexType>
                                        <xsd:sequence>
                                                <xsd:element name="personId" 
type="xsd:string"/>
                                        </xsd:sequence>
                                </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="GetPersonResponse">
                          <xsd:complexType>
                                        <xsd:sequence>
                                            <xsd:element name="personId" 
type="xsd:string"/>
                                                <xsd:element name="ssn" 
type="xsd:string"/>
                                                <xsd:element name="name" 
type="xsd:string"/>
                                        </xsd:sequence>
                                </xsd:complexType>
                        </xsd:element>
                        <xsd:element name="UnknownPersonFault">
                          <xsd:complexType>
                                        <xsd:sequence>
                                            <xsd:element name="personId" 
type="xsd:string"/>
                                        </xsd:sequence>
                                </xsd:complexType>
                        </xsd:element>
                </xsd:schema>

Is this response behavior standard for webservices with doc/lit wsdl?  I
hope this clarifies my question.



Freeman Fang wrote:
> 
> angeloNZ wrote:
>> Hi,
>>
>> I observed from running the wsdl-first example that the
>> <GetPersonResponse>
>> element contains a default namespace declaration and not a prefix.  I'm
>> comparing this with the request body that gets generated by soapUI where
>> the
>> <GetPerson> element contains a "wsdl" namespace prefix:
>>
>> request generated by soapUI:  
>>
>> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope";
>> xmlns:wsdl="http://servicemix.apache.org/samples/wsdl-first";>
>>    <soap:Header/>
>>    <soap:Body>
>>       <wsdl:GetPerson>
>>          <wsdl:personId>?</wsdl:personId>
>>       </wsdl:GetPerson>
>>    </soap:Body>
>> </soap:Envelope>
>>
>> response generated by soapUI:  GetPersonResponse contains a default
>> namespace instead of a xmlns:wsdl="" declaration.
>>
>> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope";>
>>    <soap:Body>
>>       <GetPersonResponse
>> xmlns="http://servicemix.apache.org/samples/wsdl-first";>
>>          <personId
>> xmlns="http://servicemix.apache.org/samples/wsdl-first/types";>?</personId>
>>          <ssn
>> xmlns="http://servicemix.apache.org/samples/wsdl-first/types";>000-000-0000</ssn>
>>          <name
>> xmlns="http://servicemix.apache.org/samples/wsdl-first/types";>Guillaume</name>
>>       </GetPersonResponse>
>>    </soap:Body>
>> </soap:Envelope>
>>
>> I saw that the wsdl is doc/literal and that both GetPerson and
>> GetPersonResponse is defined in the same schema definition where they
>> share
>> the same targetNamespace so I'm assuming that the response element will
>> also
>> contain the "wsdl" prefix.  Is this response standard behavior for
>> doc/lit
>> web services or is it just ServiceMix?  
>>
>> I also have another doc/lit web service in ServiceMix that has the same
>> response format.  Is there a way to get a response where I will get the
>> namespace prefix?  The default namespace is causing problems for me
>> because
>> I'm running xpath queries on the soap response and xpath returns null for
>> default namespace declarations.  
>>
>> Is there a particular way of editing the wsdl for what I want?  If you
>> could
>> also point me to what particular ServiceMix class I can extend to achieve
>> my
>> goal would be appreciated.
>>   
> You are using wsdl-first or cxf-wsdl-first?
> Sorry, I'm confused with your question, what kind of response are you 
> expected?
> 
> And go back to your question
> 
> Is there a particular way of editing the wsdl for what I want? 
> 
> No, I don't think so.  Actually how is the xml message looks like is 
> controlled by the xml processor api the component used underlying, for 
> smx-cxf, it's stax implementation  wstx-asl.
> Freeman
> 
> 
> -- 
> Freeman Fang
> ------------------------
> Open Source SOA: http://fusesource.com
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Question-on-missing-namespace-prefix-on-wsdl-first-example-response-body-tp23942162p23955226.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to