web-dev-qa-db-fra.com

Comment empêcher la génération de JAXBElement <String> dans un client de service Web CXF?

J'essaie de créer un client de service Web à l'aide de 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.

J'ai lu comment utiliser 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 existe-t-il un moyen de l'appliquer à tous les schémas?

48
ScArcher2

Vous devez créer un fichier de liaison comme ci-dessous, cela sera appliqué 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> 
65
priya

Notez que dans mon cas, j'ai dû utiliser <xjc:simple dans mon fichier de liaison jaxb pour se débarrasser des enveloppes de demande et de réponse JAXBElement dans @Endpoint:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://Java.Sun.com/xml/ns/jaxb" xmlns:xjc="http://Java.Sun.com/xml/ns/jaxb/xjc" elementFormDefault="qualified" attributeFormDefault="unqualified" jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.1">
    <xs:annotation>
        <xs:appinfo>
            <jaxb:globalBindings>
                <xjc:simple /><!-- it did only work after adding this -->
            </jaxb:globalBindings>
        </xs:appinfo>
    </xs:annotation>
</xs:schema>
0
yglodt