web-dev-qa-db-ja.com

CXF WebサービスクライアントでJAXBElement <String>が生成されないようにするにはどうすればよいですか?

CXFを使用してWCF Webサービスを利用するWebサービスクライアントを作成しようとしています。 wsdl2Javaを使用すると、StringではなくJAXBElementタイプのオブジェクトが生成されます。

Jaxb bindings.xmlファイルを使用してgenerateElementProperty = "false"を設定し、問題を解決しようとしていることを読みましたが、使用しているWebサービスには7つのインポートされたスキーマが含まれています。

7つのスキーマすべてにgenerateElementProperty="false"を指定するにはどうすればよいですか?それをすべてのスキーマに適用する方法はありますか?

48
ScArcher2

以下のようにバインディングファイルを作成する必要があります。これはグローバルに適用され、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

私の場合、jaxbバインディングファイルで<xjc:simpleを使用して、@Endpoint内のJAXBElement要求および応答ラッパーを取り除く必要があることに注意してください。

<?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