CXFを使用してWCF Webサービスを利用するWebサービスクライアントを作成しようとしています。 wsdl2Javaを使用すると、StringではなくJAXBElementタイプのオブジェクトが生成されます。
Jaxb bindings.xmlファイルを使用してgenerateElementProperty = "false"を設定し、問題を解決しようとしていることを読みましたが、使用しているWebサービスには7つのインポートされたスキーマが含まれています。
7つのスキーマすべてにgenerateElementProperty="false"
を指定するにはどうすればよいですか?それをすべてのスキーマに適用する方法はありますか?
以下のようにバインディングファイルを作成する必要があります。これはグローバルに適用され、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>
私の場合、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>