我有一个 Spring-WS Web 服务(SOAP 1.2 MTOM)部署为大型应用程序(在 Weblogic 上)的一部分,返回不正确的内容类型(消费者不喜欢它)。内容类型是
Content-Type: multipart/related;boundary="----=_Part_1_4569975.1498510764791";type="text/xml";start="<soapPart>"
我在 TomEE 上部署了另一个精益模型服务,以这种方式返回它(消费者喜欢它)-
Content-Type: Multipart/Related; boundary="----=_Part_4_1924421953.1498510734751"; type="application/xop+xml"; start-info="application/soap+xml"
第一次服务可能出现什么问题。确保正确的 Content-Type 的配置在哪里?
更新(5天后)-
我已将其范围缩小到在 Weblogic (10.3.6) 上返回内容类型“text/xml”和在 TomEE 1.7.4 上返回内容类型“application/xop+xml”的完全相同的 WAR 文件。任何人都可以告诉我这些环境之间有什么区别?如何使应用程序在 Weblogic 上返回正确的内容类型?
这两个环境之间的区别在于 SAAJ 的实现。 TomEE 可能会使用 JRE 中的那个,而 Weblogic 有自己的 SAAJ 实现。您可能想尝试使用 Axiom 来配置它,而不是使用带有 SAAJ 的 Spring-WS。
I too faced the same problem and by using below code I am able to overcome this.
SaajSoapMessage saajSoapMessage = (SaajSoapMessage) message;
if (soapAction != null) {
saajSoapMessage.setSoapAction(soapAction);
}
try {
SOAPMessage soapMessage = saajSoapMessage.getSaajMessage();
MimeHeaders headers = soapMessage.getMimeHeaders();
headers.removeHeader(TransportConstants.HEADER_CONTENT_TYPE);
headers.addHeader(TransportConstants.HEADER_CONTENT_TYPE, "application/soap+xml;charset=utf-8");
}catch(Exception e)
{
//log
}