我們有一個當前在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.4至3.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,但沒有定義標頭,也沒有多部分。 如何追溯這些步驟並查看對我的響應進行了哪些設置?
我將此添加到我的web服務中,但它仍然以相同的方式響應。但我也看不到在我的SOAP信封中,即使沒有使用@MTOM。那麼這是否意味着這是另一回事? –
kinglite