Не удается создать классы Java из wsdl с помощью wsdl2java

У меня есть этот документ wsdl, созданный из приложения .NET с использованием StackService. Я использую Apache CXF, чтобы получить некоторые сгенерированные классы Java.

Я запускаю следующую команду (Windows):

D:\SomePath>wsdl2java -d d:\temp http://mywsdl.com

Результат выглядит следующим образом:

Ошибка WSDLToJava:

Сводка: сбоев: 50, предупреждений: 0

‹‹‹ ОШИБКА!

Часть в сообщении ‹{http://schemas.servicestack.net/types}CadastroUsuarioOut> указана Тип ‹{http://schemas.servicestack.net/types}CadastroUsuarioResponse> не найден в схемы

Часть в сообщении ‹{http://schemas.servicestack.net/types}ContratoImovelIn> упоминается Тип ‹{http://schemas.servicestack.net/types}ContratoImovel> не найден в схемы

плюс еще 48 похожих на часть ошибок сообщения

WSDL создается автоматически и успешно используется другими системами.

Есть идеи?

Спасибо


person Androiderson    schedule 18.03.2013    source источник
comment
Поскольку он говорит, что тип не определен в схемах, первым шагом будет проверка, верно ли это, т.е. ссылается ли WSDL на некоторые схемы XML (файлы *.xsd)? Доступны ли они для wsdl2java? Содержат ли они отсутствующее определение типа?   -  person meriton    schedule 19.03.2013


Ответы (2)


У меня такое же сообщение об ошибке (конечно, с другим wsdl), и я вижу, что в ваших ‹wsdl:type есть ‹xsd:import.

Решением моей проблемы было добавление schemaLocation в файлы ‹xsd:import.

Пример старый

<xsd:import namespace="http://schemas.servicestack.net/types"/>

Пример новый

<xsd:import namespace="http://schemas.servicestack.net/types" schemaLocation="types.xsd" />
person DaniEll    schedule 20.01.2016
comment
Это решение сработало для меня. Спасибо. Но как вы думаете, почему WSDL нужно было расположение схемы, специально определенное с помощью schemaLocation? Почему было недостаточно иметь XSD в том же каталоге, что и WSDL? - person Cale Sweeney; 28.04.2017

Проверьте раздел «типы» файла wsdl. Раздел «Типы» определяет различные типы XML, используемые для обмена данными в сообщении SOAP. Ознакомьтесь с образцом файла wsdl -

http://heasarc.gsfc.nasa.gov/itwg/wsdl_all.html

Убедитесь, что раздел 'types' для вашего wsdl действителен и определяет все типы данных, используемые службой.

Глядя на ошибку, похоже, что «CadastroUsuarioResponse» и «ContratoImovel» отсутствуют в определении «типов».

person Sashi    schedule 18.03.2013