Spring-WS 服务返回错误的内容类型(“text/xml”而不是“application/xop+xml”)

问题描述 投票:0回答:2

我有一个 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 上返回正确的内容类型?

spring-ws
2个回答
0
投票

这两个环境之间的区别在于 SAAJ 的实现。 TomEE 可能会使用 JRE 中的那个,而 Weblogic 有自己的 SAAJ 实现。您可能想尝试使用 Axiom 来配置它,而不是使用带有 SAAJ 的 Spring-WS。


0
投票
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
}
© www.soinside.com 2019 - 2024. All rights reserved.