要するに、私は制御できない wsdl を持っており、非常に似ていて同じ目的を満たす 2 つの型を定義しています。
<xsd:complexType name="TypeA_CommData">
<xsd:annotation>
<xsd:appinfo>
<jxb:class name="CommunicationData"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="CommunicationPreference" type=TypeA_CommDataPrfComm" minOccurs="0" />
<xsd:element name="Telephone" type="TypeA_CommDataTele" minOccurs="0" maxOccurs="2" />
<xsd:element name="Facsimile" type="TypeA_CommDataFacs" minOccurs="0" maxOccurs="2" />
<xsd:element name="EMail" type="TypeA_CommDataEml" minOccurs="0" maxOccurs="2" />
</xsd:sequence>
</xsd:complexType>
...
<xsd:complexType name="TypeB_CommData">
<xsd:annotation>
<xsd:appinfo>
<jxb:class name="CommunicationData"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="CommunicationPreference" type=TypeB_CommDataPrfComm" minOccurs="0" />
<xsd:element name="Telephone" type="TypeB_CommDataTele" minOccurs="0" maxOccurs="2" />
<xsd:element name="Facsimile" type="TypeB_CommDataFacs" minOccurs="0" maxOccurs="2" />
<xsd:element name="EMail" type="TypeB_CommDataEml" minOccurs="0" maxOccurs="2" />
</xsd:sequence>
</xsd:complexType>
ご覧のとおり、これらの両方の complexType に同じクラス名を割り当てようとしましたが、案の定、コンパイラは次の例外をスローします。
[ERROR] Two declarations cause a collision in the ObjectFactory class.
line 832 of file:/my.wsdl
[ERROR] (Related to above error) This is the other declaration.
line 3078 of file:/my.wsdl
[ERROR] Two declarations cause a collision in the ObjectFactory class.
line 3078 of file:/my.wsdl
[ERROR] (Related to above error) This is the other declaration.
line 832 of file:/my.wsdl
どうすればこれを達成できるのでしょうか?注意: ここではインライン バインディングを使用しましたが、これは本番環境では実行できません。しかし、ソリューションを外部バインディング ファイルに移植するのは難しくないはずです。