Axis2接收MTOM附件没有datahandler发现错误

时间:2012-07-16 10:40:39

标签: java soap axis2 soapui mtom

对于一个项目,我正在使用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包含以下代码段:

...
<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生成请求,并将属性'use 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附件。不知怎的,我创建的testclient工作得很好,但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可以帮助我,但事实并非如此。

1 个答案:

答案 0 :(得分:0)

解决方案的详细信息在上面的原始消息中。使用以下两个站点解决了这些问题:

  1. DataHandler问题:http://cxf.apache.org/docs/mtom-attachments-with-jaxb.html
  2. SoapUI问题:http://ssagara.blogspot.nl/2012/03/test-axis2-jax-ws-mtom-service-using.html
  3. 我希望这对你们中的一些人有所帮助。