我开发了支持MTOM的CXF Web服务。我在我的DTO中添加了一个注释,告诉JAXB候选MTOM优化:
@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.
谢谢!
答案 0 :(得分:1)
默认情况下,JAXB将所有公共属性视为已映射。由于您要对一个字段进行注释,并且其名称与该属性不匹配,因此您将获得第二个映射。
<强>解决方案强>
@XmlAceesorType(XmlAccessType.FIELD)
,以便JAXB将字段映射到字段上。