2014-03-31 74 views
1

我正在使用基本64编码的二进制数据对象使用webservice。相应的XSD元素看起来是这样的:不使用附件的SOAP消息

<xs:element name="Document" maxOccurs="unbounded" 
       xmime:expectedContentTypes="application/octet-stream"> 
    <xs:complexType> 
     <xs:simpleContent> 
      <xs:extension base="xs:base64Binary"> 
       <xs:attribute name="id" type="xs:anyURI" use="required"> 
        <xs:annotation> 
         <xs:documentation>documentation text...</xs:documentation> 
        </xs:annotation> 
       </xs:attribute> 
      </xs:extension> 
     </xs:simpleContent> 
    </xs:complexType> 
</xs:element> 

使用Maven的JAXWS - 工具 - 插件与将JBossWS-CXF的客户端(本地客户端会导致同样的错误)的东西似乎缺少生成我的课之后。无论我如何尝试启用MTOM,它都不会发送任何附件,但它将二进制数据保留在主XML中。我尝试配置SOAPBinding,并使用带和不带阈值的MTOMFeature创建端口。基本上它总是看起来像这样。

<ns4:Document id="Document01">dGhpcyBpcyBzYW1wbGUgZG9jdW1lbnQgbm8uIDE=</ns4:Document> 

在xsd文件中是否有错误,插件是问题还是只是我忘了什么?

-

与其他插件生成的类(JAXWS-Maven的插件)后,我得到了在控制台中一个有趣的警告。它告诉我,xmine:expectedContentType属性存在于一个无效元素中。我很确定我看到了几个这样做的例子,它完全一样,所以我不知道这是否会导致任何问题。

这并没有改变任何东西,我发现类很好。

-

这似乎是这个方法调用我们的处理程序实现的一个问题:

ctx.getMessage(); 

CTX是投入SOAPHandler实现的方法的handleMessage这个SOAPMessageContext对象。一旦执行此方法,请求中就不会有附件。我很好奇吸气剂如何禁用整个请求的附件。有任何想法吗?

回答