如何在Java中解析WSDL?

时间:2010-03-22 21:05:51

标签: java web-services wsdl

我需要WSDL解析器来获取消息,portTypes,操作,绑定,服务,...... 我希望一些解析器已经存在。那么,任何指导?

5 个答案:

答案 0 :(得分:3)

希望此链接对您选择WSDL解析器Parse WSDL Effectively非常有用(查看此链接的存档:Web Archive)。

我尝试过使用Apache WodenWSDL4JMembrane SOA。 Apache Woden或Membrane SOA就可以了。

答案 1 :(得分:0)

可以使用多个Web服务堆栈。

看看Metro堆栈。开源并直接在Java 6中提供。

答案 2 :(得分:0)

f wsdl = '''
<definitions name="AgencyManagementService"
    xmlns:ns1="http://www.example.org/NS1"
    xmlns:ns2="http://www.example.org/NS2">
    <ns1:message name="SomeRequest">
        <ns1:part name="parameters" element="SomeReq" />
    </ns1:message>
    <ns2:message name="SomeRequest">
        <ns2:part name="parameters" element="SomeReq" />
    </ns2:message>
</definitions>
'''

def xml = new XmlSlurper().parseText(wsdl).declareNamespace(ns1: 'http://www.example.org/NS1', ns2: 'http://www.example.org/NS2')
println xml.'ns1:message'.'ns1:part'.size()
println xml.'ns2:message'.'ns2:part'.size()

希望这会有所帮助。可以从任何其他Java类调用Groovy类。将所有XML人工转移到Groovy:)

答案 3 :(得分:0)

http://docs.oracle.com/javase/6/docs/technotes/tools/share/wsimport.html查看wsimport工具文档。它是一个标准的JDK工具,可以为与Web服务的交互生成基于JAXB的Java工件。

答案 4 :(得分:-1)

使用http://sourceforge.net/projects/wsdl4j/

public Definition readWSDLFile(String location) throws  WSDLException {
    WSDLReader reader = getWsdlFactoryInstance().newWSDLReader();
    reader.setFeature("javax.wsdl.importDocuments", true);
    return reader.readWSDL(location);
}