2010-03-22 27 views
7

Necesito el analizador para WSDL para obtener los mensajes, portTypes, operaciones, enlaces, servicios, ... Espero que algún analizador ya exista. Entonces, ¿alguna guía?Cómo analizar WSDL en Java?

Respuesta

0

Hay varias pilas de servicios web disponibles.

Eche un vistazo a la pila de Metro. Fuente abierta y directamente en Java 6.

+0

Tengo que hacer el servicio dinámico invocador basado en el WSDL. ¿Alguna dirección sobre cómo hacerlo con Metro? – Milan

+0

Bueno, necesito hacer una forma dinámica (invocador de servicio), basado en WSDL. Imagine que recibe WSDL y debe generar formulario a partir de él (campos de entrada) y también la posibilidad de invocar esa operación. Tengo un repositorio de WSDL. Debería ser dinámico que pueda funcionar para cualquier WSDL. Espero haber sido claro enaugh. – Milan

+0

¿No hace la misma pregunta que http://stackoverflow.com/questions/2491598/create-on-the-fly-web-service-dynamic-web-service-invoker? – nzpcmad

-1

uso 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); 
} 
3

Esperanza este enlace será útil para que usted elija un analizador WSDL, Parse WSDL Effectively (mira el archivo de este enlace: Web Archive).

He intentado usar Apache Woden, WSDL4J y Membrane SOA. Apache Woden o Membrane SOA harían bien.

+1

El enlace "Parse WSDL Effectively" está ahora muerto. Apache Woden solo es compatible con WSDL 2.0, no con WSDL 1.1. –

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() 

Espero que esto ayude. Se puede llamar a la clase Groovy desde cualquier otra clase de Java. Mueva todo el trabajo XML a Groovy :)

Cuestiones relacionadas