Я пытаюсь разработать генератор формы в Java, в котором пользователи смогут записать wsdl URL и получить список операций, поддерживаемых веб-сервисом в ComboBox. Когда пользователь выберет один из объектов в ComboBox затем, он будет видеть, что поля формы генерировали использование wsdl URL.
Я - новичок в технологиях веб-сервиса после поиска о синтаксических анализаторах веб-сервиса в сети, я решил пользоваться библиотекой оси. Но я действительно не знаю, который часть wsdl документа должна я анализировать
Я не пытаюсь создать классы Java веб-сервиса, я должен генерировать поля формы для любого wsdl URL.
Например, вот веб-сервис, который обеспечивает 9 операций
http://services.aonaware.com/DictService/DictService.asmx
и wsdl файл здесь:
http://services.aonaware.com/DictService/DictService.asmx?WSDL
Я должен знать, какие части wsdl файла должны быть проанализированы, любая справка ценилась бы.
Чтобы начать работать с WSDL и понять, как построен такой документ, возможно, вам стоит взглянуть на какую-нибудь статью, например, Понимание WSDL или WSDL Tutorial или любой другой начинающий ресурс, который вы найдете в Google.
Теперь, чтобы ответить на ваш вопрос в упрощенном виде, вы должны начать с элемента portType
, который содержит:
Абстрактный набор операций, поддерживаемых одной или несколькими конечными точками (широко известный как интерфейс); операции определяются обменом сообщениями
Например, в вашем случае:
<wsdl:operation name="DictionaryList">
<wsdl:documentation>Returns a list of available dictionaries</wsdl:documentation>
<wsdl:input message="tns:DictionaryListSoapIn"/>
<wsdl:output message="tns:DictionaryListSoapOut"/>
</wsdl:operation>
И, для каждой операции, вам нужно будет разобрать входные и выходные сообщения, а именно: сообщение
:
Определение абстрактного сообщения, которое может состоять из нескольких частей, каждая часть может быть различного типа.
Здесь, например, входным сообщением предыдущей операции является:
<wsdl:message name="DictionaryListSoapIn">
<wsdl:part name="parameters" element="tns:DictionaryList"/>
</wsdl:message>
Затем, чтобы понять содержание сообщения, посмотрите на типы :
Контейнер для определений абстрактного типа, определенный с помощью XML-схемы
Здесь элемент DictionaryList
определен как пустой тип completeType:
<s:element name="DictionaryList">
<s:complexType/>
</s:element>
Как я уже говорил, это действительно очень упрощенный ответ, так как WSDL не может быть обобщена в четырех параграфах и, честно говоря, то, что вы собираетесь делать, на самом деле не является тривиальной задачей. Позвольте мне перефразировать это: будет кровь! Итак, даже если эти несколько строк могут помочь вам (очень немного) начать работу, я определенно не буду начинать такой проект с нуля, а воспользуюсь существующей библиотекой или инструментом (например, Xydra или Eclipse XML Forms Generator или . Кстати, я заметил, что вы решили использовать Axis, и что вы не хотите генерировать классы Java, но я все равно горячо рекомендую не использовать Axis. На самом деле, я бы использовал JAX-WS RI, который поставляется в комплекте с Java 6 и является гораздо более простым API. На всякий случай, чтобы сгенерировать классы Java, просто выполните:
$ mkdir generated
$ wsimport -d generated http://services.aonaware.com/DictService/DictService.asmx?WSDL
Это не тривиальный проект, и Вы можете обнаружить, что библиотека, которая уже делает это, будет Вашим лучшим подходом, но местом для начала будет отображение атрибутов HTML-компонентов FORM, а события Min/Max Occues - JavaScript.
Скорее всего, будет намного проще написать Ваш FORM, исходя из Вашего понимания WSDL. Что касается чего-то, что может помочь, вы можете использовать что-то вроде
Или для чего-нибудь веб основанного (что я только что протестировал с помощью вашей WSDL и это работает), вы можете попробовать
http://www.soapclient.com/soaptest.html
Я знаю, что эти две ссылки могут быть полностью вне базы для того, что вы пытаетесь сделать, так что удачи вам в ваших попытках справиться с этой задачей :)
.вот хороший учебник Томаса Байера о "Чтении файла wsdl". http://www.predic8.com/wsdl-reading.htm
Я не могу говорить за WSDL сторону, но вы можете рассмотреть Metawidget за сторону генерации формы: как только вы извлекли и разобрали WSDL, вы можете вставить ее в Metawidget и получить много UI goodness бесплатно (поддержка разных платформ, разных библиотек виджетов и т.д.)
Regards,
Richard.