强制cxf为MTOM附件生成DataHandler而不是byte []

时间:2017-09-08 08:25:47

标签: java soap cxf mtom cxf-codegen-plugin

我必须使用MTOM-Attachments实现SOAP调用。 WSDL由外部合作伙伴提供,因此我不能/不想修改它。

我曾经使用axis2和adb生成客户端,但我更倾向于使用CXF和JAXB,因为生成的代码看起来更清晰。

遗憾的是,WSDL将附件元素定义如下:

<xsd:element name="documentBinary" type="xsd:base64Binary" />

这使得CXF(Wsdl2Java)生成以下字段:

@XmlValue
protected byte[] documentBinary;

这将导致在SOAP-Message中内联附件,SOAP-Service将拒绝它。

Axis 2用于使用相同的.xsd和.wsdl文件生成DataHandler类型的字段。

我知道我可以将定义更改为

<xsd:element name="documentBinary" type="xsd:base64Binary" xmime:expectedContentTypes="*/*">

将生成正确的代码:

@XmlElement(required = true)
@XmlMimeType("*/*")
protected DataHandler documentBinary;

有没有办法强制CXF在不触及WSDL的情况下生成第二个结果(宁可不会,因为它是由第三方提供的)。也许通过使用JAXB / JAXWS-Bindings文件?

0 个答案:

没有答案