6

我正在努力将 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,我不希望在本地修改它.

除了修改 WSDL 之外,还有其他方法可以请求 CXF 使用 DataHandler 生成类吗?我已经在使用 jaxb 绑定文件来调整生成的其他一些参数,但是我找不到任何可以让我覆盖这个特定设置的东西。

4

0 回答 0