Клиент веб-службы SOAP работает на Tomcat, но не работает на IBM Web Sphere - ошибка проверки - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть веб-сервис, который хорошо работает на Tomcat 7.0 (Java 7), но не на веб-сфере. Вероятно, есть проблема с библиотеками, но я не знаю, как найти эту специфическую проблему сервера приложений WAS.

Клиентская реализация использует Spring WS SOAP a 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) at cz.legend.mzv.spi.ws.clients.convertor.ConvertorClient.convert (ConvertorClient.java:63) at 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 / поддержка / 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

1 Ответ

0 голосов
/ 12 ноября 2018

Ошибка проверки в первом плане означает, что запрос / ответ не в ожидаемой форме. Сначала проверьте запрос в соответствии с определением. В логгере есть опция для включения запросов на печать / ответов в журнал. E.q. log4j.properties имеет опции для Spring WS:

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

Найдите ключевое слово Envelope, скопируйте содержимое запроса и проверьте его в каком-либо независимом инструменте, который предназначен для проверки запросов SOAP - например, SoapUI и др. Если в ответе Validation error, проверьте запрос.

В моем случае я пропустил этот шаг и сосредоточился на, вероятно, разных несовместимых библиотеках. Это была ошибка. Проблема заключалась в различном поведении кода в Tomcat и Web Sphere - какой-то ресурс был недоступен, а исключение было плохо обработано. В результате запросы на Tomcat и Web Sphere были разными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...