Weblogic 9.2 Web服务客户端SOAP由于新服务器不支持SOAPMessage内容类型而导致的错误

时间:2017-06-10 18:47:41

标签: java soap

我公司有技术更新项目。我们正在从营销中购买一个新系统,并尝试将其与我们现有的系统集成。 因为需要集成数百个现有系统。我们设计了重用当前拆除系统接口并在我们的新系统中公开它们。

由于我们的新系统框架问题,它无法将Web服务端点URL公开给现有系统。相反,它提供了一个包装器servlet URL,它适用于除了在weblogic 9.2上运行的系统之外的几乎所有系统。 它遇到Soap故障错误(http 500 - Internal Server Error)并且新系统连接失败。

java.rmi.RemoteException: SOAPFaultException - FaultCode [{http://schemas.xmlsoap.org/soap/envelope/}Server] FaultString [Failed to receive message java.io.IOException: The server at *http://***.***.***.***:8080/servlet/SoapAdapter* returned a 500 error code (Internal Server Error).

我们发现它正在上面的Weblogic 10上工作,但是无法在weblogic 9.2上工作。我们花了大约2周时间找出根本原因,但仍然没有结果。

1 个答案:

答案 0 :(得分:0)

(代表OP发布)

昨天,我使用Fiddler捕获http包并比较weblogic 10和weblogic 9之间的差异。我发现它们之间的内容类型不同;

当我们尝试使用weblogic 10时,我发现内容类型为[ Content-Type: text/xml ];但是当尝试使用weblogic 9.2时,我们发现内容类型为[ text/xml; charset="utf-8" ]。这里很奇怪,weblogic 9.2正在后台发送charset。

所以我实现了一个soap处理来覆盖它SoapMessage MimeHeaders;中的内容类型!

下面是我的肥皂处理程序代码:

SOAPMessageContext soapMessageContext = (SOAPMessageContext) context;
SOAPMessage message = soapMessageContext.getMessage();
MimeHeaders soapMimeHeader = message.getMimeHeaders();
soapMimeHeader.removeHeader("Content-Type");
soapMimeHeader.addHeader("Content-Type", "text/xml");
soapMimeHeader.addHeader("charset", "UTF-8");