我目前正在使用WSO2企业服务总线,一些基于cxf的webservices和mtom附件。
使用SoapUI(启用了MTOM),我将以下请求提交给一个后端服务:
...
<incident>
....
<attachmentList>
<attachment>
<contentID>cid:soapui32.png</contentID>
</attachment>
</attachmentList>
</incident>
...
启用MTOM原始数据
...
<attachmentList>
<attachment>
<contentID>
<inc:Include href="cid:soapui32.png" xmlns:inc="http://www.w3.org/2004/08/xop/include"/>
</contentID>
</attachment>
</attachmentList>
...
------=_Part_0_22113723.1360006252844
Content-Type: image/x-png; name=soapui32.png
Content-Transfer-Encoding: binary
Content-ID: <soapui32.png>
Content-Disposition: attachment; name="soapui32.png"; filename="soapui32.png"
......
到目前为止,这么好。 现在,作为下一步,我为此Web服务创建了一个基于WSDL的代理服务(WSO2 ESB 4.5.1)。
<proxy xmlns="http://ws.apache.org/ns/synapse" name="testService" transports="https,http" statistics="enable" trace="enable" startOnLoad="true">
<target>
<outSequence>
<send/>
</outSequence>
<endpoint>
<wsdl service="IncidentService" port="IncidentServicePort" uri="uri2myservicewsdl"/>
</endpoint>
</target>
<publishWSDL uri="uri2myservicewsdl"/>
<description></description>
</proxy>
在axis2.xml中将enableMTOM设置为true,为代理服务启用了MTOM。
如果我通过SoapUI使用相同的附件提交完全相同的请求,esb会将附件转换为内联内容(调试日志):
DEBUG - Starting Activation Handler invocation. Incoming Message:
......
<incident>
<attachmentList>
<attachment>
<contentID>iVBORw0KGgoAAAANSUh.....</contentID>
</attachment>
</attachmentList>
</incident>
.....
</soapenv:Body></soapenv:Envelope>
{org.wso2.carbon.activation.module.ActivationHandler}
我在哪里可以启用MTOM,以便代理不会将其转换为内联内容?
非常感谢提前。
也许某人有兴趣,即使这只是一种解决方法:
我在axis2.xml(wso2 esb conf目录)中启用了MTOM和SwA附件。
只要我禁用了SwA并且只启用了MTOM,附件就不会再转换为内联内容了。
现在所有代理服务都禁用了SwA,但目前还可以。 我稍后再看看它,也许这是一个错误。