[jboss-user] [JBossWS] - Cannot find child element - with namespace
jmaasing
do-not-reply at jboss.com
Wed Aug 29 08:35:43 EDT 2007
We have a problem with an XFire generated client. The SOAP request generated from the XFire client When we try to access the JBoss 4.0.5GA-WS service we send the following SOAP request:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
| xmlns:xsd="http://www.w3.org/2001/XMLSchema"
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
| <soap:Body>
| <ns1:getInvoiceData xmlns:ns1="http://ws.test.se/jaws">
| <ns1:InvoiceRequest xmlns:ns2="http://jaws.ws.test.se/jaws">
| <ns1:fromInvDate>2006-02-28T14:41:13.860+01:00</ns1:fromInvDate>
| </ns1:InvoiceRequest>
| </ns1:getInvoiceData>
| </soap:Body>
| </soap:Envelope>
|
This request generates an error:
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
| <env:Header/>
| <env:Body>
| <env:Fault xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
| <faultcode>env:Client</faultcode>
| <faultstring>Cannot find child element: InvoiceRequest</faultstring>
| </env:Fault>
| </env:Body>
| </env:Envelope>
If we open the WSDL in SoapUI it generates a request that looks like this:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:jaws="http://ws.test.com/jaws">
| <soapenv:Header/>
| <soapenv:Body>
| <jaws:getInvoiceData>
| <InvoiceRequest>
| <jaws:fromInvDate>?</jaws:fromInvDate>
| </InvoiceRequest>
| </jaws:getInvoiceData>
| </soapenv:Body>
| </soapenv:Envelope>
Notice the missing jaws namespace on InvoiceRequest (exactly what the errormessage said :)).
The question is if XFire is producing invalid SOAP Request based on the WSDL? Is there a problem on the JBoss-WS side? Or is there something amiss in the document encoding perhaps?
WSDL.
| <definitions name='InvoiceService'
| targetNamespace='http://ws.test.com/jaws'
| xmlns='http://schemas.xmlsoap.org/wsdl/'
| xmlns:ns1='http://jaws.ws.test.com/jaws'
| xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
| xmlns:tns='http://ws.test.com/jaws'
| xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
| <types>
| <schema elementFormDefault='qualified' targetNamespace='http://jaws.ws.test.com/jaws' xmlns='http://www.w3.org/2001/XMLSchema' xmlns:ns1='http://ws.test.com/jaws' xmlns:soap11-enc='http://schemas.xmlsoap.org/soap/encoding/' xmlns:tns='http://jaws.ws.test.com/jaws' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
| <import namespace='http://ws.test.com/jaws'/>
| <simpleType name='String1'>
| <restriction base='string'>
| <minLength value='0'/>
| <maxLength value='1'/>
| </restriction>
| </simpleType>
|
| </schema>
| <schema elementFormDefault='qualified' targetNamespace='http://ws.test.com/jaws' xmlns='http://www.w3.org/2001/XMLSchema' xmlns:ns2='http://jaws.ws.test.com/jaws' xmlns:soap11-enc='http://schemas.xmlsoap.org/soap/encoding/' xmlns:tns='http://ws.test.com/jaws' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
| <import namespace='http://jaws.ws.test.com/jaws'/>
|
| <complexType name='InvoiceData'>
| <sequence>
| <element name='address' type='ns2:String1'/>
| </sequence>
| </complexType>
| <!-- Input for request of an getInvoiceData -->
| <complexType name='InvoiceRequest'>
| <sequence>
| <element name='fromInvDate' nillable='true' type='ns2:String1'/>
| </sequence>
| </complexType>
| </schema>
| </types>
| <message name='Invoice_getInvoiceData'>
| <part name='InvoiceRequest' type='tns:InvoiceRequest'/> </message> <message name='Invoice_getInvoiceDataResponse'>
| <part name='result' type='tns:InvoiceData'/> </message>
|
| <portType name='Invoice'>
| <operation name='getInvoiceData' parameterOrder='InvoiceRequest'>
| <input message='tns:Invoice_getInvoiceData'/>
| <output message='tns:Invoice_getInvoiceDataResponse'/>
| <fault message='tns:WebServiceFault' name='WebService'/>
| </operation>
| </portType>
| <binding name='InvoiceBinding' type='tns:Invoice'>
| <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
|
| <operation name='getInvoiceData'>
| <soap:operation soapAction=''/>
| <input>
| <soap:body namespace='http://ws.test.com/jaws' use='literal'/>
| </input>
| <output>
| <soap:body namespace='http://ws.test.com/jaws' use='literal'/>
| </output>
| </operation>
| </binding>
|
| <service name='InvoiceService'>
| <port binding='tns:InvoiceBinding' name='InvoicePort'>
| </port>
| </service>
|
| </definitions>
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4079120#4079120
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4079120
More information about the jboss-user
mailing list