Как включить упакованный WSDL для использования с Java-классами, созданными с помощью wsimport?

Я родом из C#, поэтому я понимаю, что не могу ожидать, что в Java будет много (отличных) юзабилити-функций и возможностей, но недавно я был как бы включен в этот Java-проект, и я просто не могу этого понять. В C# / .NET создание прокси-классов веб-сервисов и сгенерированных контрактов данных было пирогом, но по какой-то причине Java-реализация веб-сервисов просто не кажется мне правильной.

Вот сделка...

Я использую wsimport для создания сгенерированных .java файлов из WSDL-файлов. Например...

"%JAVA_HOME%\bin\wsimport" -quiet -extension -s .\src -d .\bin ".\wsdl\MyWSDL.wsdl"

Я заметил, что это жестко закодированное (ввод этой фразы почти вызвало у меня рвоту только сейчас) «wsdlLocation» как текущее местоположение wsdl («C:\Users\ME\etc\wsdl\MyWSDL.wsdl»).Поэтому я вынимаю его:

"%JAVA_HOME%\bin\wsimport" -quiet -extension -s .\src -d .\bin -wsdllocation "NULL" ".\wsdl\MyWSDL.wsdl"

Теперь, когда я создаю экземпляр сгенерированного сервиса...

MyService xyz = new MyService();

Я получаю сообщение об ошибке. Что-то вроде «не удается найти файл C:\blahblah\Temp\NULL». ХОРОШО... Начинать с нуля. Немного изучив это, я нашел здесь пост на Stack Overflow, в котором говорилось об использовании "classpath:META-INF/WSDL.wsdl" в качестве расположения wsdl.

"%JAVA_HOME%\bin\wsimport" ... -wsdllocation "classpath:WSDLs/MyWSDL.wsdl" ".\wsdl\MyWSDL.wsdl"
copy ".\wsdl\*" .\bin\WSDLs
cd bin
"%JAVA_HOME%\bin\jar" cf WebServiceProxies.jar *

Ошибка!

"Unknown protocol: classpath" 

Как ни странно, пост на Stack Overflow был помечен как ответ. Я предполагаю, что вполне возможно, что за последние два года приличная сумма изменилась до такой степени, что «classpath:» больше не поддерживается или есть другой метод сделать это, но я не смог выяснить это / найти ответ.

Хорошо, так что у меня есть один из нескольких вопросов, на которые мне нужно ответить (заранее спасибо!!!! Я схожу с ума здесь!).

  1. Есть ли способ, чтобы он НЕ НУЖДАЛСЯ в WSDL во время выполнения? Что бы это ни стоило, я думаю, что это B.S., что ему это нужно, когда я создаю экземпляры объектов. Как подавить это требование?Может быть, если бы я использовал другой инструмент...?

  2. Если этот код НЕ может не нуждаться в WSDL во время выполнения, как заставить его забрать этот WSDL из пакета? Что нужно поместить в аргумент wsdllocation, чтобы он загрузил WSDL из JAR-файла?

8
задан Malachi 11 September 2015 в 18:31
поделиться