JAX-WS return empty lists

不想你离开。 提交于 2019-12-02 02:59:38

问题


I'm new in web services. I have faced some problem. At the server side i'm using spring-ws. At the client side i'm using jax-ws. With wsimport tool i have generated java classes according to my wsdl.

Everything works fine, but for some reason jax-ws does not parse arrays and list correctly, all lists are empty

I'm absolutely sure, that response is form correctly, tested it with soapui, also i'm using logging interceptor to log outcomming responses.

Below is the snippets of response

response looks like

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header/>
   <SOAP-ENV:Body>
      <firstElementResponse>
         <name>hello world text</name>
         <name>hello world text</name>
         <name>hello world text</name>
      </firstElementResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

and the snippets of wsdl

<xs:complexType name="sayHelloResponseType">
  <xs:sequence>
    <xs:element maxOccurs="unbounded" minOccurs="0" name="name" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

To generate client code i use wsimport.

SayHelloResponseType resp = serv.sayHello(r);
List<String> name = resp.getName();
System.out.println(name.size());

Thank you. Any help will be highly appreciated.


回答1:


Seems it's just an invalid body of response, that does not math wsdl shema. Neither spring-ws neither jax-ws throws exception. It simply parse invalid data to empty list without any warrnings.

org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor saved my day

probably i have to tweak logging for jax-ws to avoid it next time




回答2:


I just answered a similar question in How can I handle Castor unmarshaling of SOAP messages when the namespace is defined inside the operation tag? - if you're using Spring-WS, you're writing contract-first web services, so make sure you really nail that contract down. Put all your elements in a namespace, make sure your XSD schema expects elements to be qualified, and declare ns-uri and ns-prefixes in your Castor mappings. It's worth the effort.



来源:https://stackoverflow.com/questions/3601113/jax-ws-return-empty-lists

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!