2017-09-28 88 views
1

我們有一個當前在WAS8上運行的應用程序。現在我們將這個應用程序遷移到Liberty。目前,我們遇到這樣的問題:該應用程序的SOAP響應內容類型爲multipart/related。看起來像這樣:在Liberty中阻止SOAP響應Content-Type:multipart/related

HTTP/1.1 200 OK 
X-Powered-By: Servlet/3.1 
Content-Type: multipart/related; type="application/soap+xml"; boundary="uuid:acacdbe0-a9a8-46cc-aedf-58570a630ff7"; start="<[email protected]>"; start-info="application/soap+xml" 
Content-Language: en-DE 
Content-Length: 670 
Date: Thu, 28 Sep 2017 12:00:16 GMT 


--uuid:acacdbe0-a9a8-46cc-aedf-58570a630ff7 
Content-Type: text/xml; charset=UTF-8; type="application/soap+xml"; 
Content-Transfer-Encoding: binary 
Content-ID: <[email protected]> 

<soap:Envelope>....</soap:Envelope> 
--uuid:acacdbe0-a9a8-46cc-aedf-58570a630ff7-- 

這對我們很不好,因爲其他客戶端可能會遇到解析問題。

隨着WAS8的響應是內容類型application/soap+xml;charset=UTF-8;action="mySoapResponse"和沒有uuid和東西。

Here我發現了類似於我的問題的東西,但並不完全。我們也已經SOAPBinding定義,但在我的@WebService註釋看起來就像是: @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)@BindingType(value = javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)

要在自由的應用程序的工作,我們必須更新部署描述符(web.xml中)從版本2.43.0。我想這也改變了應用程序的行爲。

確實是因爲SOAPBinding註釋的主要原因還是它可能是別的?

UPDATE: 這裏是WAS8應用服務器進行比較的響應:

HTTP/1.1 200 OK 
Date: Wed, 04 Oct 2017 06:24:22 GMT 
Cache-Control: private 
Cache-Control: max-age=10 
X-Frame-Options: SAMEORIGIN 
X-Powered-By: Servlet/3.0 
Content-Length: 403 
Keep-Alive: timeout=20 
Connection: Keep-Alive 
Content-Type: application/soap+xml; charset=UTF-8; action="mySoapResponse" 
Content-Language: en-US 

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope ...>...</soapenv:Envelope> 

UPDATE2:

我注意到,自由SOAP響應也得到了<env:header>不是在WAS8響應中

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> 
    <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope"/> 
    <soap:Body>... 

所以似乎在後臺發生了一些事情。我查看了WSDL,但沒有定義標頭,也沒有多部分。 如何追溯這些步驟並查看對我的響應進行了哪些設置?

回答

0

也許Liberty正在自動使用MTOM。如果您在SOAP信封中看到<xop:Include..,則可能是MTOM。您可能能夠通過添加註釋的WebService將其關閉,@MTOM(enabled="false")

+0

我將此添加到我的web服務中,但它仍然以相同的方式響應。但我也看不到在我的SOAP信封中,即使沒有使用@MTOM。那麼這是否意味着這是另一回事? – kinglite

0

根據IBM支持,CXF(自由)的這種行爲是由於註釋@XmlAttachmentRef在我JAXB類之一。刪除這將導致一個非多部分響應。不幸的是,當我這樣做時,發送的附件將無法正確處理,並且MIME類型將丟失。

目前,我們有IBM支持尋找到這一點,如果能以某種方式在CXF(自由)是固定的,因爲在Axis2的(tWAS8.0)它的表現不同。我會盡力保持這個更新。