CXF を使用して WSDL を Java に変換しています。キーを有効にする-autoNameResolution
と、CXF は同じ内容のファイルを多数生成します。それを回避する方法はありますか?
ネストされた静的クラスを避けるために、有効にしまし<jaxb:globalBindings localScoping="toplevel">
た。WSDL 要素でわかるように、「Apple」は 3 回参照されています。残念ながら、WSDL を変更することはできません。CXF は
、それに応じて Apple.java、Apple2.java、Apple3.java-autoNameResolution
を作成するか、フラグが設定されていない場合にクラッシュします。
<xs:element name="Forest">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="99" minOccurs="0" name="Apple">
<xs:complexType>
<xs:sequence>
<xs:element name="Size" type="xsd:string" />
<xs:element name="Color" type="xsd:string" />
<xs:element name="Taste" type="xsd:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="TreeOne">
<xs:complexType>
<xs:sequence>
<xs:element name="Branch1" type="xsd:string">
</xs:element>
<xs:element maxOccurs="99" minOccurs="0" name="Apple">
<xs:complexType>
<xs:sequence>
<xs:element name="Size" type="xsd:string" />
<xs:element name="Color" type="xsd:string" />
<xs:element name="Taste" type="xsd:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="TreeTwo">
<xs:complexType>
<xs:sequence>
<xs:element name="BranchTwo" type="xsd:string">
</xs:element>
<xs:element maxOccurs="99" minOccurs="0" name="Apple">
<xs:complexType>
<xs:sequence>
<xs:element name="Size" type="xsd:string" />
<xs:element name="Color" type="xsd:string" />
<xs:element name="Taste" type="xsd:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
wsdl2javaにApple2.javaと Apple3.javaを作成しないように教え、3 つのケースすべてで Apple.java を参照する方法はありますか? バインディングを使用すると、名前をApple2->Peach、Apple3->Watermelonなどの別の名前に変更できますが、これは私が探しているものではありません。3 つのリンゴすべてが同じフィールドのセットを持ち、実際には同じであることがわかるでしょうか? それを解決する方法はありますか?cxf によって生成されたコードをリファクタリングするリファクタリング プラグインでしょうか?