Spring WS с webServiceTemplate.marshalSendAndReceive возвращает полученную ошибку для запроса, служба недоступна: не найден [404] - PullRequest
0 голосов
/ 25 июля 2011

Я пытаюсь изменить существующий веб-сервис SOAP, который использует Spring-WS и JAXB на Tomcat.Я создал новый WAR-файл со своими изменениями и развернул его в папке веб-приложений при установке Tomcat.

При вызове исходных (уже существующих) методов службы, запрос и ответ службы SOAP в порядке.Но при вызове службы по новому методу я получаю SOAP-ответ службы недоступен и не найден [404]

2011-07-25 12:58:23,365 DEBUG [org.springframework.ws.client.core.WebServiceTemplate] - Opening [org.springframework.ws.transport.http.HttpUrlConnection@12b9f14] to [http://<service URL>]
2011-07-25 12:58:23,521 DEBUG [org.springframework.ws.soap.saaj.support.SaajUtils] - SOAPElement [com.sun.xml.internal.messaging.saaj.soap.ver1_1.Envelope1_1Impl] implements SAAJ 1.3
2011-07-25 12:58:23,552 DEBUG [org.springframework.ws.soap.saaj.support.SaajUtils] - SOAPElement [com.sun.xml.internal.messaging.saaj.soap.ver1_1.Body1_1Impl] implements SAAJ 1.3
2011-07-25 12:58:23,896 DEBUG [org.springframework.ws.client.MessageTracing.sent] - Sent request [<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><ns2:DelRequest xmlns:ns2="http://<changed_address>"><ns2:userId>ncc1@%</ns2:userId><ns2:dateFromMillis>1308956400000</ns2:dateFromMillis><ns2:dateToMillis>1311634800000</ns2:dateToMillis></ns2:DelRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>]
2011-07-25 12:58:25,318 DEBUG [org.springframework.ws.client.core.WebServiceTemplate] - Received error for request [SaajSoapMessage {http://<changed_address>}DelRequest]

2011-07-25 12: 58: 25,318 ОШИБКА [net.msgplugin.controller.DeleteController] - Служба беседы недоступна по адресу: http://, Не найдено [404], null

Я импортировал проект в Eclipse и внес следующие изменения в свойства проекта:

1) С помощью аспектов проекта я проверил аспекты «Динамический веб-модуль» и «Java».2) В зависимостях модуля Java EE я проверил зависимости Maven.

Здесь следует отметить две вещи:

a) Разработчик использовал JBoss при разработке Web-сервиса, но недавно проект был передан Tomcat.b) Проект имеет структуру папок MAVEN, поэтому файл web.xml находится в папке src / main / webapp / WEB-INF, а не в WebContent / WEB-INF, что было создано при выборе фасета «Динамический веб-модуль».

Любые предложения будут высоко оценены?

Спасибо

==============================================================================

HI

Мне удалось исправить ошибку Not Found [404], но теперь я получаю другую ошибку.После дальнейшего изучения и отладки в классах WebServiceTemplate и MessageDispatcher я обнаружил, что следующий вывод на консоль:

DEBUG [org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter] - Accepting incoming [org.springframework.ws.transport.http.HttpServletConnection@11f05a1] to [http://<Service_URL>]

TRACE [org.springframework.ws.server.MessageTracing.received] - Received request [<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><ns2:DelRequest xmlns:ns2="http://<changed_address>"><ns2:userId>ncc1@%</ns2:userId><ns2:dateFromMillis>1309042800000</ns2:dateFromMillis><ns2:dateToMillis>1311721200000</ns2:dateToMillis></ns2:DelRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>]

DEBUG [org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping] - Looking up endpoint for [{<changed_address>}DelRequest]

DEBUG [org.springframework.ws.soap.server.SoapMessageDispatcher] - Endpoint mapping [org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping@6ee035] maps request to endpoint [public final net.org.messagehistory.schema.GetDelResponse net.org.messagehistory.service.endpoint.MessageHistoryEndpoint.delHistory(net.org.messagehistory.schema.GetListRequest) throws javax.xml.datatype.DatatypeConfigurationException]

DEBUG [org.springframework.ws.soap.server.SoapMessageDispatcher] - Testing endpoint adapter [org.springframework.ws.server.endpoint.adapter.GenericMarshallingMethodEndpointAdapter@1a23f67]

DEBUG [org.springframework.ws.server.endpoint.adapter.GenericMarshallingMethodEndpointAdapter] - Unmarshalled payload request to [net.org.messagehistory.schema.DelRequest@c76003]

Конечное сообщение об ошибке теперь называется «Несоответствие типа аргумента», которое, как я обнаружил, было сгенерировано одним из методов.изнутри WebServiceTemplate.class

Может кто-нибудь подсказать, в чем здесь проблема?

1 Ответ

0 голосов
/ 29 июля 2011

удалось это отсортировать.Итак, я просто хотел поделиться решением, которое кто-то может найти полезным.

Убедитесь, что метод Endpoint помечен следующим @PayloadRoot (localPart = MESSAGES_TO_DELETE, namespace = MESSAGE_NAMESPACE), где localpart совпадает с вашимЗапрос полезной нагрузки в schema.xsd

Спасибо

...