我正在努力将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绑定文件来调整代的其他一些参数,但是我找不到任何能够覆盖这个特定设置的东西。