JAX-WS возвращает пустые списки - PullRequest
2 голосов
/ 30 августа 2010

Я новичок в веб-сервисах.Я столкнулся с некоторой проблемой.На стороне сервера я использую spring-ws.На стороне клиента я использую jax-ws.С помощью инструмента wsimport я сгенерировал java-классы в соответствии с моим wsdl.

Все работает нормально, но по какой-то причине jax-ws не анализирует массивы и выводит список правильно, все списки пусты

I 'Я абсолютно уверен, что ответ является формой правильно, проверил его с помощью soapui, также я использую перехватчик регистрации для регистрации исходящих ответов.

Ниже приведены фрагменты ответа

ответ выглядит как

<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>

и фрагменты wsdl

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

Для генерации кода клиента я использую wsimport.

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

Спасибо.Любая помощь будет высоко оценена.

Ответы [ 2 ]

2 голосов
/ 30 августа 2010

Кажется, что это просто недействительное тело ответа, которое не соответствует математике wsdl shema.Ни spring-ws, ни jax-ws не выбрасывают исключения.Он просто анализирует неверные данные в пустой список без каких-либо предупреждений.

org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor спас мой день

вероятно, мне нужно настроить протоколирование для jax-w, чтобы избежать его в следующий раз

0 голосов
/ 16 февраля 2011

Я только что ответил на аналогичный вопрос в Как мне справиться с демаршалингом SOAP сообщений Castor, когда пространство имен определено внутри тега операции? - если вы используете Spring-WS, вы пишете контракт - первые веб-сервисы, поэтому убедитесь, что вы действительно заключили контракт. Поместите все свои элементы в пространство имен, убедитесь, что ваша XSD-схема ожидает, что элементы будут квалифицированы, и объявите префиксы ns-uri и ns-в ваших сопоставлениях Castor. Это стоит усилий.

...