2010-03-08 73 views
6

Estoy intentando generar clases JAXB desde el WSDL Clickatell: puede encontrar la definición WSDL aquí bastante grande: http://api.clickatell.com/soap/webservice.php?WSDLClickatell de SOAP WSDL para las clases de Java JAXB

Cuando se trata de generar clases Java a partir de este Wsdl me dieron los siguientes errores: [eRROR] simples indefinido o tipo complejo 'de SOAP-ENC: array' [eRROR] atributo indefinido 'de SOAP-ENC: ArrayType'

espero que alguien me puede ayudar. Cheers, Tim

Respuesta

0

JAXB no es compatible con RPC/Codificación. Use JAX-RPC para resolver este problema.

+1

Este no tiene nada que ver con JAXB, es un problema JAX-WS – skaffman

1

verificación de especificaciones WS-I-1.1 BasicProfile en http://www.ws-i.org/Profiles/BasicProfile-1.1.html#soapenc_Array

Dice:

r2110 En una descripción, las declaraciones no se deben extender o restringir el soapenc: tipo de matriz.

R2111 En una DESCRIPCIÓN, las declaraciones NO DEBEN usar el atributo wsdl: arrayType en la declaración de tipo.

R2112 En una DESCRIPCIÓN, los elementos NO DEBEN llamarse utilizando la convención ArrayOfXXX.

R2113 Un SOBRE NO DEBE incluir el atributo soapenc: arrayType.

yo!

+0

¿cómo debería ayudar esto? – Zarathustra

14

Su esquema se refiere al tipo SOAP-ENC: Array definido en el esquema xmlns: SOAP-ENC = "http://schemas.xmlsoap.org/soap/encoding/" pero ese esquema no está incluido en el wsdl .

Tuve un problema similar y tuve que usar un catálogo para decirle a jaxb/xjc dónde encontrar el esquema.

Ir a http://schemas.xmlsoap.org/soap/encoding/ y guardar como soapenc.xsd

continuación, crear un archivo de texto plano con el siguiente contenido

PUBLIC "http://schemas.xmlsoap.org/soap/encoding/" "soapenc.xsd" 

Luego pasan a ese archivo xjc como el archivo de catálogo


Actualización: si estás en Maven, así es como todo se juntaría.

lugar el esquema, soapenc.xsd y catalog.cat (el archivo de texto sin formato) en src/main/resources

después diga el plugin jaxb para pasar el catálogo para xjc

<plugin> 
    <groupId>org.jvnet.jaxb2.maven2</groupId> 
    <artifactId>maven-jaxb2-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>wsdl-generate</id> 
     <configuration> 
      <schemaIncludes> 
      <include>*.wsdl</include> 
      </schemaIncludes> 
      <catalog>${project.basedir}/src/main/resources/catalog.cat</catalog> 
     </configuration> 
     <goals> 
      <goal>generate</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
+0

muchas gracias! Debería darte 300 upvotes. – Zarathustra

+0

Nota: si está utilizando un cliente dinámico, juss pase el archivo de codificación al Cliente: 'Client client = factory.createClient (wsdlURL.toExternalForm(), SERVICE_NAME, Collections.singletonList (" http: //schemas.xmlsoap. org/soap/encoding/"));' –

Cuestiones relacionadas