来自给定wsdl文件的“java form generator”

时间:2009-12-28 23:30:58

标签: java web-services axis

我正在尝试在java中开发一个表单生成器,用户可以在其中编写一个wsdl url并获取ComboBox中Web服务支持的操作列表。当用户选择ComboBox中的一个项目时,他将看到使用wsdl url生成的表单字段。

我是网络服务技术的新手,在网上搜索了网络服务解析器后,我决定使用轴库。但我真的不知道我应该解析wsdl文档的哪一部分

我不是要创建Web服务的java类,我必须为任何wsdl url生成表单字段。

例如,这是一个提供9个操作的Web服务

http://services.aonaware.com/DictService/DictService.asmx

并且wsdl文件在这里:

http://services.aonaware.com/DictService/DictService.asmx?WSDL

我需要知道应该解析wsdl文件的哪些部分,我们将不胜感激。

4 个答案:

答案 0 :(得分:8)

要开始使用WSDL并了解这样的文档是如何构建的,您应该查看一些文章,例如Understanding WSDLWSDL Tutorial或您可以找到的任何其他初学者资源。谷歌。

现在,要以简化的方式回答您的问题,您必须从包含以下内容的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>

并且,对于每个操作,您需要解析输入和输出消息,message为:

  

抽象消息的定义,可以包含多个部分,每个部分可以是不同的类型。

这里,例如前一个操作的输入消息是:

<wsdl:message name="DictionaryListSoapIn">
  <wsdl:part name="parameters" element="tns:DictionaryList"/>
</wsdl:message>

然后,要了解消息的内容,请查看types

  

使用XML Schema定义的抽象类型定义的容器

这里,DictionaryList元素被定义为空的compleType:

<s:element name="DictionaryList">
  <s:complexType/>
</s:element>

正如我所说,这实际上是一个非常简化的答案,因为WSDL不能用四个段落来概括,而且说实话,你要做的事情实际上并不是一项微不足道的任务。让我重新说一下:会有血!所以,即使这几行可以帮助你(很少)开始,我绝对不会从头开始这样的项目而是使用一个现有的库或工具(如Xydra或Eclipse XML Forms Generator或......),它们不会重新发明轮子。

顺便说一下,我注意到你已经决定使用Axis,并且你不想生成Java类,但我强烈建议使用Axis。实际上,我使用捆绑在Java 6中的JAX-WS RI,它是一个更容易的API。为了以防万一,要生成Java类,只需执行:

$ mkdir generated
$ wsimport -d generated http://services.aonaware.com/DictService/DictService.asmx?WSDL

答案 1 :(得分:2)

这是一篇关于托马斯拜尔的“阅读wsdl文件”的好教程 http://www.predic8.com/wsdl-reading.htm

答案 2 :(得分:1)

这不是一个简单的项目,您可能会发现已经执行此操作的库将是您最好的方法,但是要开始的地方是将属性映射到HTML FORM组件,以及将Min / Max Occues映射到JavaScript事件。

从您对WSDL的理解中编写FORM可能要容易得多。至于可能有用的东西,你可以使用像

这样的东西

http://www.soapui.org/

或者对于某些基于Web的内容(我刚刚使用您的WSDL进行测试并且它可以工作),您可以尝试

http://www.soapclient.com/soaptest.html

我知道这两个链接可能完全偏离了你想要完成的事情,所以你努力应对这一挑战:)

答案 3 :(得分:1)

我不能代表WSDL方面,但你可以考虑Metawidget表单生成方面:一旦你提取并解析了WSDL,就可以将它推入Metawidget并获得大量的UI免费的善良(支持不同的平台,不同的小部件库等)

此致

理查德。