Мне нужен парсер для WSDL для получения сообщений, типов портов, операций, привязок, сервисов, ... Надеюсь, какой-то парсер уже существует. Итак, какие-нибудь рекомендации?
Надеюсь, эта ссылка будет полезна для вас при выборе парсера WSDL, Parse WSDL Effectively (посмотрите архив этой ссылки: Web Archive).
Parse WSDL Effectively
Web Archive
Я пытался использовать Apache Woden, WSDL4J и Membrane SOA. Apache Woden или Membrane SOA отлично подойдут.
Apache Woden
WSDL4J
Membrane SOA
вы можете использовать мембрану-соа для анализа файлов wsdl. добавить зависимость от http://mvnrepository.com/artifact/com.predic8/soa-model-core.
документацию можно найти по адресу http://membrane -soa.org / soa-model / .
Ознакомьтесь с документацией к инструменту wsimport по адресу http://docs.oracle.com/javase/6/docs/technotes/tools/share/wsimport.html. Это стандартный инструмент JDK, который генерирует Java-артефакты на основе JAXB для взаимодействия с веб-сервисом.
wsimport
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()
Надеюсь, это поможет. Класс Groovy может быть вызван из любого другого класса Java. Переместить всю работу XML в Groovy:)
использование 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); }
Доступны несколько стеков веб-служб.
Посмотрите на стек Метро. Открытый исходный код и доступен непосредственно в Java 6.