【发布时间】:2012-07-15 04:51:37
【问题描述】:
对于一个项目,我正在使用 Apache Axis2 1.6.2 实现 SOAP 服务。我有一项服务需要使用 MTOM 接收文件。但遗憾的是,我一直在接收 MTOM 附件时遇到问题。我不断收到异常:
org.apache.axiom.om.OMException: A data handler was not found for content id cid:491414508823
....
我尝试在网上搜索答案,但没有成功。我希望有人能让我朝着正确的方向前进。我的 wsdl 包含以下 sn-p:
...
<xs:element minOccurs="0" name="PDF_Attachment">
<xs:complexType>
<xs:all>
<xs:element minOccurs="0" name="PDF_AttachmentName" type="xs:string"/>
<xs:element name="PDF_AttachmentContent" type="xs:base64Binary"/>
</xs:all>
</xs:complexType>
</xs:element>
...
我使用 SoapUI 生成请求并将属性“使用 MTOM”设置为 true。
有没有人遇到过同样的问题或知道如何解决这个问题。非常感谢您的帮助!
理查德
更新
我想我已经解决了这个问题。问题在我的 xsd/wsdl 定义中。我使用 jaxb 将外部 xsd 中定义的业务对象转换为带有 JAXB 注释的 POJO。但是 xs:base64Binary 被转换为 byte[]。使用以下命令更改 xsd:
<xs:schema ... xmlns:xmime="http://www.w3.org/2005/05/xmlmime"> ...
并将元素更改为:
<xs:element name="PDF_AttachmentContent" minOccurs="1" maxOccurs="1" type="xs:base64Binary" xmime:expectedContentTypes="application/octet-stream">
JAXB 现在在 getPDF_AttatchmentContent 中创建了一个 DataHandler 作为返回类型。我必须解决的唯一问题是允许 SOAPUI 发送 MTOM 附件。不知何故,我创建的测试客户端运行良好,但 SOAPUI 不发送附件...
上述解决方案的来源:http://cxf.apache.org/docs/mtom-attachments-with-jaxb.html
更新 2: http://ssagara.blogspot.nl/2012/03/test-axis2-jax-ws-mtom-service-using.html 用 MTOM 解决了我的 SOAPUI 问题。我没有在我的肥皂信息中编辑正确的 cid。我以为 SOAPUI 会帮助我解决这个问题,但事实并非如此。
【问题讨论】:
-
您可以发布发送到该服务的消息的副本吗?此外,您应该发布更多的堆栈跟踪信息,而不仅仅是第一行。
-
感谢您的阅读和评论。我刚刚解决了这个问题。
标签: java soap axis2 soapui mtom