WSDL files usually have a problem for jaxws.
All the elements defined probably won't have the attribute 

    form="unqualified"
    
This missing attribute in some cases (I think it's only when they send
arrays but can't really isolate if it's the only case where 
this happens) causes the unmarshalling to fail. No errors are reported
but the DTOs aren't fully filled with the information that came in the
SOAP envelope.

If you're having this problem then before anything else try to add
this attribute to see if it fixes the problem!

Example:

In the WSDL was:

<xsd:complexType name="listaC">
	<xsd:sequence> (ou <xsd:all>)
		<xsd:element name="Artigo" type="xsd:string" minOccurs="0" />
		<xsd:element name="UM" type="xsd:string" minOccurs="0" />
		<xsd:element name="Sequencia" type="xsd:string" minOccurs="0" />
		<xsd:element name="Quantidade" type="xsd:string" minOccurs="0" />
	</xsd:sequence> (ou </xsd:all>)
</xsd:complexType>

It had to be changed to:

<xsd:complexType name="listaC">
	<xsd:sequence>
		<xsd:element name="Artigo" type="xsd:string" minOccurs="0" form="unqualified" />
		<xsd:element name="UM" type="xsd:string" minOccurs="0" form="unqualified" />
		<xsd:element name="Sequencia" type="xsd:string" minOccurs="0" form="unqualified" />
		<xsd:element name="Quantidade" type="xsd:string" minOccurs="0" form="unqualified" />
	</xsd:sequence>
</xsd:complexType>


Object listaC.getArtigo() in the 1st case returned null, on the second case already had
the information that WPMS had sent us in the Soap package.

Hope it helped!

9 October 2013 - Paulo Abrantes  