2010-12-10 45 views
44

J'essaie de créer un client de service Web utilisant CXF pour consommer un service Web WCF. Lorsque j'utilise wsdl2java, il génère des objets avec des types JAXBElement au lieu de String.Comment empêcher que JAXBElement <String> ne soit généré dans un client CXF Web Service?

J'ai lu sur l'utilisation d'un fichier jaxb bindings.xml pour définir generateElementProperty = "false" pour essayer de résoudre le problème, mais le service Web que je consomme contient 7 schémas importés.

Comment puis-je spécifier le generateElementProperty="false" sur les sept schémas ou est-il possible de l'appliquer à tous les schémas?

Répondre

60

Vous devez créer un fichier de liaison comme ci-dessous, cela s'applique globalement et l'utiliser comme 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 Pour des instructions sur la façon de définir un fichier de liaison en utilisant le plugin maven. – ScArcher2

+1

Je me demande pourquoi ce n'est pas le comportement par défaut. – axk

+1

Il serait préférable d'utiliser une extension de fichier plus spécifique pour le fichier de mapping comme '.xml' ou' .xjb' comme proposé ici http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/ 2.0/tutorial/doc/JAXBUsing4.html # wp148366 – schnatterer