Я занимаюсь рефакторингом способа создания клиентского кода для восходящего веб-сервиса. Существующая сборка создает клиентский код 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?