Я видел эту проблему по всему Интернету, но все еще не нашел четкого решения, которое бы сработало для меня.Вот проблема:
Я пытаюсь создать клиент Web-сервиса на Java.Клиент должен быть консольным приложением, которое будет размещаться на сервере и автоматически запускаться через определенный промежуток времени.Веб-сервис, который я пытаюсь использовать, был написан и поддерживается сторонней компанией.Сервис был написан на ASP.NET.У рассматриваемой компании есть несколько услуг, которые мы попали.Все они написаны на ASP.NET.Я никогда не имел дело с этими службами до 2 дней назад, когда мне было поручено использовать 2 службы и создать электронную таблицу Excel из данных.Прежде чем продолжить, позвольте мне описать мою среду разработки.Некоторые из них актуальны, некоторые нет, но я хочу включить все:
- 32-разрядная версия Windows 7 Professional
- IDE NetBeans 6.9.1
- JavaJDK 1.6.0_17
- jre6
- Полный выпуск платформы Glassfish 3 с открытым исходным кодом
- Все программы имеют все доступные обновления
Вкл.эта проблема.Когда я добавил первый клиент Web-сервиса в свое консольное приложение, я был удивлен тем, насколько гладко прошел процесс.Большая часть моего опыта написания приложений для веб-сервисов находится в .NET.Я смог импортировать WSDL и NetBeans сгенерировал все классы с первой попытки.В течение 5 минут я смог сделать свой первый звонок в службу и получил ожидаемый ответ, сообщив мне, что моя попытка была успешной.Затем я добавил второго клиента веб-службы в консольное приложение, используя адрес для второго необходимого WSDL.Вот где я столкнулся с серьезной проблемой.
После импорта WSDL меня предупредил об ошибке NetBeans, заявив:
Клиент веб-службы не может быть создан JAXWS:утилита wsimport.Причина: неопределенное объявление элемента ': схема'
После злоупотребления Google в течение следующего часа в поисках решения я, наконец, решил применить метод проб и ошибок.Глядя на окно «Вывод» в NetBeans, я увидел, что оно жаловалось на 3 конкретные строки.Когда я взглянул на WSDL, я увидел, что эти 3 строки были точно такими же, как показано ниже:
<s:element ref="s:schema" />
Эти 3 строки были найдены в случайных местах от вершины WSDL, вплоть допримерно на полпути.Я удалил эти строки из WSDL, найденного в папке «Ссылки на веб-службы», оставив WSDL только в папке META-INF.Затем я обновил ссылку на службу и, к моему большому удивлению, NetBeans проанализировал WSDL и сгенерировал мои классы, как и раньше.Отлично, верно?Ну, вот где проблема №2 вступает в игру.
Теперь, когда я смог скомпилировать свое приложение без ошибок, мне пришлось попытаться запустить службу, чтобы проверить, сработал ли мой хак.Это не так.Из-за другой ошибки в JAXWS, я должен предоставить URL для WSDL в конструкторе при создании объекта службы.Это означает, что установленный мной WSDL игнорируется, и теперь сервис снова использует WSDL, который невозможно проанализировать.Когда я попытался указать местоположение WSDL, которое я отредактировал локально в своем проекте, меня встретила другая ошибка компиляции, в которой говорилось, что у меня есть исключение NullPointerException.Он сказал, что мне нужно инициализировать объект перед его использованием.
Я исследовал то, что кажется бесконечным количеством тем на этом сайте, которые ищут и пробуют любые решения, которые были предоставлены.Я также пробовал решения со всего Интернета, но все безуспешно.Если у кого-нибудь есть какие-либо советы для меня, любые советы, хитрости, хаки, пожалуйста, дайте мне знать.Я открыт для любых предложений на данный момент.
Заранее благодарен за любую оказанную помощь.