我公司有技术更新项目。我们正在从营销中购买一个新系统,并尝试将其与我们现有的系统集成。 因为需要集成数百个现有系统。我们设计了重用当前拆除系统接口并在我们的新系统中公开它们。
由于我们的新系统框架问题,它无法将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周时间找出根本原因,但仍然没有结果。
答案 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");