如何强制CXF在不修改WSDL的情况下将DataHandler用于base64binary类型?

时间:2012-10-22 21:51:41

标签: wsdl cxf mtom

我正在努力将SOAP服务的实现从使用Axis2更改为使用JAX-WS(技术上,JBossWS在AS 7上提供的CXF实现)并且我遇到了一个阻止我切换的问题JAX-WS风格的最终剩余方法。

(因为规范似乎不公开,因此稍微匿名)方法返回一个包含base64binary元素的Type。

<xs:complexType name="BitmapResult">
    <xs:sequence>
        <xs:element minOccurs="0" name="chunkBitmap" nillable="true" type="xs:base64Binary"/>
    </xs:sequence>
</xs:complexType>

在Axis2中,这会生成一个使用DataHandler处理二进制参数的类,并且默认情况下似乎使用MTOM返回结果。

使用CXF wsdl2java工具生成一个使用byte []的类型类,并在SOAP回复本身中将参数作为base64编码文本返回。

从我读过的所有内容来看,使用CXF执行此操作的正确方法是确保生成的wsdl包含:xmime:expectedContentTypes="application/octet-stream"但是由于我们通过外部源提供了WSDL,我宁愿不在本地修改它。

是否有另一种方法来请求CXF使用DataHandler生成类而不是修改WSDL?我已经在使用jaxb绑定文件来调整代的其他一些参数,但是我找不到任何能够覆盖这个特定设置的东西。

0 个答案:

没有答案