Hi,
Basically just posting your "SAXException: SimpleDeserializer encountered a
child element, which is NOT expected, in something it was trying to
deserialize" message says it all. This is a very common problem, although
when I ran into it the solution wasn't that easy. I suggest googling on that
exception as there probably is some better advice out there.
The way I solved it was using the jboss 4.0.2 support libs for axis. You need
to set a mapping location, or be able to reference the mapping location
somehow.
org.jboss.webservice.client.ServiceFactoryImpl factory=
(org.jboss.webservice.client.ServiceFactoryImpl)
ServiceFactoryImpl.newInstance();
javax.xml.rpc.Service service = factory.createService(url,
mappinglocation, ws4eeMetaData, qname, null);
endpoint = (CallCentreWebEndpoint)
service.getPort(CallCentreWebEndpoint.class);
As I stated try googling on your exception.
HTH,
iksrazal
Em Terça 06 Dezembro 2005 12:05, o Ben Reif escreveu:
> I'm trying to create a DOC/LIT style service that uses an object that
> contains getters and setters for a List of objects.
> The List contains RequestFormItemizedLine objects. The containing
> object, ItemizedRequestForm, looks like:
>
> public class ItemizedRequestForm{
> public List getItemizedLines()
> public void setItemizedLines(List)
> }
>
> Anyway, I run the java2wsdl and get this in my WSDL:
>
> <complexType name="ItemizedRequestForm">
> <sequence>
> ....
> <element maxOccurs="1" minOccurs="0" name="itemizedLines"
> nillable="true" type="impl:ArrayOf_tns1_RequestFormItemizedLine" />
> ....
> </sequence>
> </complexType
>
>
>
> <complexType name="ArrayOf_tns1_RequestFormItemizedLine">
> <sequence>
> <element maxOccurs="unbounded" minOccurs="0" name="item"
> type="tns1:RequestFormItemizedLine" />
> </sequence>
> </complexType>
>
> <complexType name="RequestFormItemizedLine">
> <sequence>
> ....
> </sequence>
> </complexType>
>
>
> Then I run wsdl2java (have tried both wrapArrays=true/false) to generate
> the client stubs, and at runtime I get a SOAP request that looks like:
>
>
> <?xml version="1.0" encoding="UTF-8"?>
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/
> <http://schemas.xmlsoap.org/soap/envelope/> "
> xmlns:xsd="http://www.w3.org/2001/XMLSchema
> <http://www.w3.org/2001/XMLSchema> "
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
> <http://www.w3.org/2001/XMLSchema-instance> ">
> <soapenv:Body>
> <ItemizedRequestForm4 xmlns="http://form.pe.domain.momentum.ams.com
> <http://form.pe.domain.momentum.ams.com> ">
> .....
> <itemizedLines>
> <ns1:item
> xmlns:ns1="http://MomentumWebServices/service/ItemizedRequestFormService
> <http://MomentumWebServices/service/ItemizedRequestFormService> ">
> .....
> </item>
> </itemizedLines>
> </ItemizedRequestForm4>
> .....
> </Body>
> </Envelope>
>
>
> When the SOAP message is being processed on the server this results in
> an exception:
>
> org.xml.sax.SAXException: SimpleDeserializer encountered a child
> element, which is NOT expected, in something it was trying to
> deserialize.
>
>
> My first question has to do with the WSDL, why does it automatically use
> the name "item" when it's not a valid field in the object? My second
> question
> is in the generated stubs, why does is assume the target namespace for
> item? This is incorrect since it doesn't corespond to any object in
> that namespace,
> and it seem like on the server it can't find the deserializer for that
> combination and defaults to the SimpleDeserializer, which throws the
> error.
> Shouldn't the SOAP request really look something like (assuming there
> were 3 RequestFormItemizedLine objects in the List):
>
>
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/
> <http://schemas.xmlsoap.org/soap/envelope/> "
> xmlns:xsd="http://www.w3.org/2001/XMLSchema
> <http://www.w3.org/2001/XMLSchema> "
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
> <http://www.w3.org/2001/XMLSchema-instance> ">
> <soapenv:Body>
> <ItemizedRequestForm4 xmlns="http://form.pe.domain.momentum.ams.com
> <http://form.pe.domain.momentum.ams.com> ">
> .....
> <itemizedLines
> xmlns="http://MomentumWebServices/service/ItemizedRequestFormService
> <http://MomentumWebServices/service/ItemizedRequestFormService> ">
> <ns1:RequestFormItemizedLine
> xmlns:ns1="http://form.pe.domain.momentum.ams.com
> <http://form.pe.domain.momentum.ams.com> ">
> .....
> </RequestFormItemizedLine>
> <ns1:RequestFormItemizedLine
> xmlns:ns1="http://form.pe.domain.momentum.ams.com
> <http://form.pe.domain.momentum.ams.com> ">
> .....
> </RequestFormItemizedLine>
> <ns1:RequestFormItemizedLine
> xmlns:ns1="http://form.pe.domain.momentum.ams.com
> <http://form.pe.domain.momentum.ams.com> ">
> .....
> </RequestFormItemizedLine>
> </itemizedLines>
> </ItemizedRequestForm4>
> .....
> </Body>
> </Envelope>
>
>
> Could someone please let me know if this is correct or not, and how to
> get the client to send the SOAP request in the correct way?
>
> -Thanks in advance
>
> Ben