Как создать документированный WSDL с помощью XFire
-
06-07-2019 - |
Вопрос
Я использую XFire ( Огонь ) чтобы создать оболочку веб-сервиса вокруг моего приложения.XFire предоставляет интерфейс веб-сервиса и WSDL во время выполнения (или создает их во время компиляции, точно не знаю).
Многие из наших клиентов не очень хорошо знают веб-сервисы, и, кроме того, они просто не читают никакой внешней документации, такой как Javadoc.Я знаю, что можно добавить документацию (для параметров и методов) непосредственно в файл WSDL.
Я думал о аннотациях или XML-файлах Aegis, но я не знаю, как это сделать...Ты знаешь способ?
Редактировать:Я только что нашел это Проблема с JIRA но последнее мероприятие было в 2006 году.Есть какие-нибудь идеи?
Решение
XFire медленно направляется к /dev/null.Использование CXF вместо этого.Другими словами, XFire устарел в пользу CXF - это в значительной степени те же разработчики.
Поскольку вы используете подход Java-first, я предлагаю вам сгенерировать свой WSDL раз и навсегда с помощью CXF java2wsdl
инструмент, затем вы помещаете в него свою документацию и указываете CXF использовать это документированный WSDL вместо того, чтобы позволять CXF генерировать свой собственный (недокументированный) WSDL во время выполнения / развертывания.
Эта страница содержит практически все, что вам нужно знать о создании веб-сервиса в CXF.
Другие советы
И мой последний совет относительно CXF - используйте Aegis для привязки данных вместо JAXB.Это не работает для сложного POJO.
По моему опыту, у нас нет проблем со сложными POJO и JAXB, единственная проблема заключается в том, что код начинает загромождаться JAXBElements.С другой стороны, документация Aegis довольно скудна и не очень хорошо поддерживается по отношению к CXF.
Позвольте мне добавить свои два цента относительно XFire.У нас была очень серьезная проблема с XFie под JDK6 (как Tomcat 6.0, так и 5.5). Пожалуйста, взгляните на этот вопрос.В нашем случае XFire с 4+ веб-сервисами под управлением JDK6 приводит к зависанию серверов приложений (взаимоблокировки потоков и т.д.).Это интересно, но под JDK5 все было в порядке.
И я полностью согласен с Кристианом Вестом относительно перехода на CXF из XFire.Это имеет смысл во многих случаях, напримерESB Mule 2 больше не поддерживает встроенные разъемы XFire (смотрите также).
И я хотел бы добавить, что переход с XFire на CXF не является прямым способом (напримерCXF имеет зависимости jar, которые конфликтуют с некоторыми выпусками hibernate смотрите также), но это выполнимо.В нашем случае мы сделали это за пару дней без исправления кода (настройка только Spring).
И мой последний совет относительно CXF - используйте Aegis для привязки данных вместо JAXB.Это не работает для сложного POJO.