【问题标题】:Web Service SOAP Client Works on Tomcat but no on IBM Web Sphere - validation errorWeb 服务 SOAP 客户端在 Tomcat 上工作,但在 IBM Web Sphere 上不工作 - 验证错误
【发布时间】:2019-04-10 03:02:49
【问题描述】:

我有 Web 服务,它在 Tomcat 7.0 (Java 7) 上运行良好,但在 Web Sphere 上运行良好。可能是库有问题,但我不知道如何找出这个 App WAS Server 特定的问题。

客户端实现使用 Spring WS SOAP 和 Spring WS Core:

import org.springframework.ws.client.core.support.WebServiceGatewaySupport;
import org.springframework.ws.soap.SoapFaultException;
import org.springframework.ws.soap.client.SoapFaultClientException;
...     
public KonverzeResponse convert(KonverzeRequest request)
            throws Exception, SoapFaultClientException, SoapFaultException {

        KonverzeResponse response = (KonverzeResponse) getWebServiceTemplate().marshalSendAndReceive(request);

        if (response == null /* || response.getValue() == null */)
            throw new Exception("Response is empty.");

        return response/* .getValue() */;
    }

Tomcat 发出成功,WAS 发出:

[11/6/18 18:02:01:030 CET] 000000d8 SystemOut O 2018-11-06 18:02:01,029 错误 [WebContainer : 7] ComponentServiceFacadeImpl - 客户端错误,无法接受转换后的文件或其他错误. org.springframework.ws.soap.client.SoapFaultClientException:Validation error 在 org.springframework.ws.soap.client.core.SoapFaultMessageResolver.resolveFault(SoapFaultMessageResolver.java:37) 在 org.springframework.ws.client.core.WebServiceTemplate.handleFault(WebServiceTemplate.java:776) 在 org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:602) 在 org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:539) 在 org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:386) 在 org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:380) 在 org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:372) 在 cz.legend.mzv.spi.ws.clients.convertor.ConvertorClient.convert(ConvertorClient.java:63) 在 cz.legend.mzv.spi.ws.clients.convertor.interfaces.ConvertorServiceImpl.convertFnFile(ConvertorServiceImpl.java:103)

相关文档:

https://www.ibm.com/mysupport/s/topic/0TO500000001DQQGA2/websphere-application-server https://www.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.multiplatform.doc/ae/twbs_thirdparty.html https://www.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.multiplatform.doc/ae/twbs_jaxrs_migrate_web20.html https://www-01.ibm.com/support/docview.wss?uid=swg21639407 https://www.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.messages.doc/com.ibm.ws.websvcs.resources.websvcsMessages.html

【问题讨论】:

  • 英文错误信息:“客户端错误,无法接受转换后的文件或其他错误。”

标签: java web-services websphere


【解决方案1】:

验证错误,在第一个计划中意味着请求/响应不是预期的形状。首先根据定义检查请求。 Logger 可以选择在日志中启用打印请求/响应。方程log4j.properties 有 Spring WS 的选项:

# Spring WS
log4j.logger.org.springframework.ws.client.MessageTracing=TRACE
log4j.logger.org.springframework.ws.server.MessageTracing=DEBUG

找出关键字Envelope,复制Request的内容,并在一些独立的工具中查看SoapUI 等 如果响应是Validation error,请检查请求。

在我的例子中,我省略了这一步并专注于可能不同的不兼容库。这是错误的。问题在于 Tomcat 和 Web Sphere 上的代码行为不同 - 某些资源无法访问,并且存在处理不当的异常。结果是,Tomcat 和 Web Sphere 上的请求不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-02
    • 2015-12-04
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多