OK Thanks.

So now I try change it to qualified, since I have a client (Delphi) that
cannot handle this.

Searching for how to do this I saw the package-info.java thing.

So I put a package-info.java file into the package of the service with
this content:

@javax.xml.bind.annotation.XmlSchema(
                namespace = "http://echo/2008/11/16";, 
        
attributeFormDefault=javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED,
        
elementFormDefault=javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package dk.something;


But nothing happens to the generated WSDL it still has both set to
unqualified.

Am I missing something or is there another way?

/Chr

-----Original Message-----
From: Daniel Kulp [mailto:[email protected]] 
Sent: 15. december 2008 17:52
To: [email protected]
Cc: Christian Landbo Frederiksen
Subject: Re: Figuring out why params turn to null


The schema has:

<xs:schema attributeFormDefault="unqualified"
   elementFormDefault="unqualified"

Thus, the "hello" child element MUST be unqualified.  That's per the
schema 
rules.   If it's sent qualified, then it doesn't match the schema.

Dan




On Monday 15 December 2008 9:57:19 am Christian Landbo Frederiksen
wrote:
> I am using CXF 2.1
>
>
>
> I expose a java class/method like this
>
>
>
> @WebService(name="EchoService",
> targetNamespace="http://echo.dk/2008/11/16";)
>
> public interface EchoService {
>
>
>
>             @WebMethod
>
>             public String echo(@WebParam(name = "hello") String hello)
>
>
>
>
>
> This turns into this wsdl:
>
>
>
> <xs:schema attributeFormDefault="unqualified"
> elementFormDefault="unqualified"
> targetNamespace="http://echo.dk/2008/11/16";
> xmlns="http://echo.dk/2008/11/16";
> xmlns:xs="http://www.w3.org/2001/XMLSchema";>
>
>       <xs:element name="echo" type="echo"/>
>
>       <xs:complexType name="echo">
>
>         <xs:sequence>
>
>           <xs:element minOccurs="0" name="hello" type="xs:string"/>
>
>         </xs:sequence>
>
>       </xs:complexType>
>
>       <xs:element name="echoResponse" type="echoResponse"/>
>
>       <xs:complexType name="echoResponse">
>
>         <xs:sequence>
>
>           <xs:element minOccurs="0" name="return" type="xs:string"/>
>
>         </xs:sequence>
>
>       </xs:complexType>
>
>     </xs:schema>
>
>
>
>
>
> Can successfully be called in SOAP-UI:
>
>
>
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
> xmlns:ns="http://optagelse.dk/2008/11/16";>
>
>    <soapenv:Header/>
>
>    <soapenv:Body>
>
>       <ns:echo>
>
>                                             <hello>Champ</hello>
>
>       </ns:echo>
>
>    </soapenv:Body>
>
> </soapenv:Envelope>
>
>
>
> But another client generates this:
>
>
>
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; >
>
>    <soapenv:Header/>
>
>    <soapenv:Body>
>
>       <echo xmlns="http://optagelse.dk/2008/11/16";>
>
>                                             <hello>Champ</hello>
>
>       </echo>
>
>    </soapenv:Body>
>
> </soapenv:Envelope>
>
>
>
> And this results in the param being null in the method
>
>
>
> The problem is that the param only works when it is given without
> namespace.
>
> ns:hello gives the same result in the first example.
>
>
>
> Is this not a bug? The schema in the wsdl has targetNamespace set so
you
> would assume that the client namespace on the param would work.
>
>
>
> /Chr



-- 
Daniel Kulp
[email protected]
http://dankulp.com/blog

Reply via email to