So according to the way the schema is defined, an element is part of the
schema if it has no namespace in it's QName, am I right ?

Now, what does the namespace attribute on <soap:body> change regarding this
? Is this suppose to force the parser to check the incoming message to match
the specified namespace, and to ignore all other elements, as it seems to
behave ? The wsdl spec is not very explicit on what it is designed for...

Nicolas.


2008/7/29 Daniel Kulp <[EMAIL PROTECTED]>

>
>
> No, it's the opposite.   There isn't an "elementForm=Qualified" on the
> schema.   Thus, those elements should have NO namespace qualifications.
>  The first method sets the default namespace, so they end up qualified which
> is wrong.   The correct message that CXF accepts should not have those
> elements qualified.
>
> Dan
>
>
>
>
> On Jul 29, 2008, at 8:22 AM, nicolas de loof wrote:
>
>  According to the wsdl, both <dossier> and <requeteConsSolde> are defined
>> in
>> the schema with targetNamespace="http://localhost/pdr/services/";
>>
>> Based on your comment, the first message (with namespace prefix only on
>> the
>> requeteConsSolde element) should NOT be accepted by CXF, but the second
>> one
>> (setting default namespace) should... but Stéphane gets the oposite
>> behaviour.
>>
>> I don't know what the namespace attribute on <soap:body> bind tag is for.
>> How is it suppose to change the way CXF (or jaxb?) parse the message
>> during
>> unmarshalling ?
>>
>>
>> 2008/7/29 Philipp Leitner <[EMAIL PROTECTED]>
>>
>>  Correct me if I'm wrong, but isn't the second variant semantically
>>> different to the first one? In the first variant, 'dossier' and 'canal'
>>> are
>>> in the default namespace, while they are in the '
>>> http://localhost/pdr/services/' namespace in the second one (again,
>>> correct me if I'm wrong, but this is what I think how xmlns="..." works).
>>>
>>> IIRC the old Axis was rather lenient in terms of Namespaces, unlike newer
>>> frameworks such as CXF. This may explain why the old Axis happily
>>> accepted
>>> your invocation, while CXF does not.
>>>
>>> /philipp
>>>
>>>
>>> On Jul 29, 2008, at 11:52 AM, ARDOUIN, Stéphane wrote:
>>>
>>> Hi,
>>>
>>>>
>>>> I have a difference of behavior about namespaces between Axis 1.1 and
>>>> CXF
>>>> 2.0.8 that I'd like to understand.
>>>>
>>>> For the WSDL I joined to this email, if I send the following request,
>>>> the
>>>> behavior of the webservice implemented with CXF 2.0.8 is OK :
>>>> Request generated with soap-UI :
>>>> <soapenv:Envelope xmlns:soapenv="
>>>> http://schemas.xmlsoap.org/soap/envelope/"; xmlns:ser="
>>>> http://localhost/pdr/services/";>
>>>>  <soapenv:Header/>
>>>>  <soapenv:Body>
>>>>    <ser:consulterSoldeRequete>
>>>>       <dossier>0683690006</dossier>
>>>>       <canal>SWI</canal>
>>>>    </ser:consulterSoldeRequete>
>>>>  </soapenv:Body>
>>>> </soapenv:Envelope>
>>>>
>>>> Response (CXF) is OK :
>>>> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
>>>>  <soap:Body>
>>>>    <ns2:consulterSoldeReponse xmlns:ns2="http://localhost/pdr/services/
>>>> ">
>>>> [...]
>>>>    </ns2:consulterSoldeReponse>
>>>>  </soap:Body>
>>>> </soap:Envelope>
>>>>
>>>> But the following request, which worked for the webservice implemented
>>>> with Axis 1.1 no longer works for the webservice implemented with CXF
>>>> 2.0.8
>>>> :
>>>>
>>>> Request which was OK with Axis but KO with CXF 2.0.8  :
>>>> <soapenv:Envelope xmlns:soapenv="
>>>> http://schemas.xmlsoap.org/soap/envelope/";>
>>>>  <soapenv:Header/>
>>>>  <soapenv:Body>
>>>>    <consulterSoldeRequete xmlns="http://localhost/pdr/services/";>
>>>>       <dossier>0683690006</dossier>
>>>>       <canal>SWI</canal>
>>>>    </consulterSoldeRequete>
>>>>  </soapenv:Body>
>>>> </soapenv:Envelope>
>>>>
>>>> The response (CXF) is KO : an applicative error is returned because the
>>>> java objects dynamically provided by CXF contain null attributes. The
>>>> software checks this attributes, and returns this error, saying that
>>>> mandatory fields are missing in the request.
>>>>
>>>> The difference lies in the fact that the second request doesn't specify
>>>> the namespace in the same manner : it uses a default namespace. But with
>>>> Axis 1.1, it didn't matter.
>>>> This is related to the following section of the WSDL :
>>>> <operation name="consulterSolde">
>>>>           <input>
>>>>               <soap:body namespace="http://localhost/pdr/services/";
>>>> use="literal"/>
>>>>           </input>
>>>>           <output>
>>>>               <soap:body namespace="http://localhost/pdr/services/";
>>>> use="literal"/>
>>>>           </output>
>>>> </operation>
>>>>
>>>> Workaround :
>>>> If I remove the namespace in the soap:body element of the operation in
>>>> the
>>>> binding section of the WSDL, and regenerate the webservice, the second
>>>> request becomes OK.
>>>>
>>>> Could you tell me if this is normal, or if you plan to handle that in a
>>>> future release ?
>>>>
>>>> Thank you in advance.
>>>>
>>>> Stéphane Ardouin
>>>>
>>>> <service_consulter.zip>
>>>>
>>>>
>>>
>>>
> ---
> Daniel Kulp
> [EMAIL PROTECTED]
> http://www.dankulp.com/blog
>
>
>
>
>

Reply via email to