2014-03-31 96 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對象。一旦執行此方法,請求中就不會有附件。我很好奇吸氣劑如何禁用整個請求的附件。有任何想法嗎?

回答