Axis 2 java2wsdl создает другой wsdl, чем JBoss показывает в URL? Wsdl - PullRequest
1 голос
/ 18 апреля 2009

Я занимаюсь рефакторингом способа создания клиентского кода для восходящего веб-сервиса. Существующая сборка создает клиентский код Java с использованием развертывания веб-службы на JBoss 4.2 и выполнения AntisodeTask Axis 2 для http://devserver.url? Wsdl . Этот метод не работает, если сервер разработки не работает или устарел wsdl. (Crusie Control дает сбой при каждом изменении wsdl.)

Мне нужно создать клиентский код на основе самого класса веб-службы, а не указывать на развертывание веб-службы. Я использую java2wsdl для генерации wsdl из класса веб-сервиса, а затем использую ту же AntCodegenTask для генерации клиентских классов.

Проблема в том, что wsdl, созданный java2wsdl, отличается от того, что JBoss отображает в http://devserver.url? Wsdl . Помимо прочего, некоторые пространства имен отличаются, и шаг AntCodegenTask не преобразует эти пространства имен в правильную структуру пакета.

Мне нужно, чтобы окончательная структура пакета соответствовала ожиданиям клиентского кода. Существующий AntCodegenTask использует для этого namespacetopackages = "...", но когда я выполняю тот же AntCodegenTask для wsdl, сгенерированного java2wsdl, он не преобразует пространства имен в имя пакета.

Почему Axis отображает другой wsdl при развертывании веб-службы в JBoss по сравнению с java2wsdl?

Есть ли способ использовать Axis для создания клиентского кода из класса веб-служб без генерации промежуточного wsdl?

Документация для задач Ant java2wsdl и wsdl2java немного нечеткая. Axis 2 v 1.4.1 предоставляет задачи Ant для AntCodegenTask и 2 Java2WSDLTasks в разных пакетах. Установка Axis 2 включает в себя двоичные файлы для wsdl2java и java2wsdl, но нет двоичного кода codegen. Может быть, AntCodegenTask такой же, как wsdl2java.

У кого-нибудь есть что-то подобное для работы с Axis 2?

1 Ответ

0 голосов
/ 24 февраля 2012

Развертывание веб-сервиса на сервере JBoss. Сохраните локально файл WSDL и передайте его в качестве параметра в задачу Ant. Надеюсь, сгенерированные классы будут правильными, однако может случиться, что Axis 2 не захочет работать с сгенерированным JBoss WSDL.

В этом случае используйте wsconsume.bat, поставляемый с JBoss, вместо задачи AXIS ant.

Всегда используйте этот сгенерированный файл WSDL, упаковывайте его вместе с приложением и т. Д., Поскольку даже разные версии JBoss создают разные файлы WSDL.

Ось всегда отстой, если вы можете (я сейчас это не так очевидно ...) использую Apache CXF или собственную реализацию JBoss.

...