MTOM を有効にした CXF Web サービスを開発しました。MTOM 最適化のフィールド候補を JAXB に伝えるために、DTO に注釈を追加しました。
@XmlType
public class FileDTO {
private String Name;
private String FileType;
@XmlMimeType("application/octet-stream")
private DataHandler Dfile;
...
Web サービスをデプロイするとき、WSDL の DTO 定義は次のようになります。
<xs:complexType name="fileDTO">
<xs:sequence>
<xs:element name="Dfile" type="xs:base64Binary" minOccurs="0" xmime:expectedContentTypes="application/octet-stream"/>
<xs:element name="dfile" type="xs:base64Binary" minOccurs="0"/>
<xs:element name="fileType" type="xs:string" minOccurs="0"/>
<xs:element name="name" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
どういうわけか、プライベート メンバー DFile が重複しているようです !!
なぜそれが起こるのですか?
でJavaクライアントを生成しようとすると
wsdl2java -client d:\service.wsdl
次のエラーが表示されます。
WSDLToJava Error: d:\service.wsdl [26,1]: Two declarations cause a collision in the ObjectFactory class.
ありがとうございました !!