2010-12-10 18 views
44

Estoy intentando crear un cliente de servicio web usando CXF para consumir un servicio web WCF. Cuando uso wsdl2java genera objetos con tipos JAXBElement en lugar de String.¿Cómo evito que JAXBElement <String> se genere en un cliente de CXF Web Service?

He leído sobre el uso de un archivo jaxb bindings.xml para establecer generateElementProperty = "false" para tratar de solucionar el problema, pero el servicio web que estoy consumiendo contiene 7 esquemas importados.

¿Cómo puedo especificar el generateElementProperty="false" en los siete esquemas, o hay alguna forma de aplicarlo a todos los esquemas?

Respuesta

60

Tienes que crear un archivo de enlace de la siguiente manera, esto va a obtener aplicado a nivel mundial y utilizarlo como wsdl2java - b "bindings.txt" "WSDL"

<jaxb:bindings version="2.1" 
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <jaxb:globalBindings generateElementProperty="false"/> 
</jaxb:bindings> 
+7

http://cxf.apache.org /docs/maven-cxf-codegen-plugin-wsdl-to-java.html Para obtener instrucciones sobre cómo configurar un archivo de enlaces utilizando el complemento maven. – ScArcher2

+1

Me pregunto por qué no es el comportamiento predeterminado. – axk

+1

Sería mejor utilizar extensiones de archivo más específicas para el archivo de asignación como '.xml'or' .xjb' como se propone aquí http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/ 2.0/tutorial/doc/JAXBUsing4.html # wp148366 – schnatterer

Cuestiones relacionadas