2009-06-10 3 views
2

Я пытаюсь создать WS на основе WSDL, который определяет один запрос и один ответ. Входящий запрос должен быть сопоставлен с конечной точкой в ​​зависимости от SOAPAction, определенного в сообщении SOAP. Для этого я пытаюсь использовать SoapActionEndpointMapping в моем файле конфигурации servlet.xml и определять сопоставления, как описано в Spring documentation.Использование SoapActionEndpointMapping в Spring-ws

<bean id="endpointMapping" class="org.springframework.ws.soap.server.endpoint.mapping.SoapActionEndpointMapping"> 
    <property name="mappings"> 
     <props> 
      <prop key="http://myCompany/MyService/MyRequest/mySoapActionOne">myFirstEndpoint</prop> 
      <prop key="http://myCompany/MyService/MyRequest/mySoapActionTwo">mySecondEndpoint</prop> 
     </props> 
    </property> 

Моя конечная точка проходит AbstractMarshallingPayloadEndpoint и должен быть в состоянии обрабатывать запросы.

Проблема заключается в том, что, когда я пытаюсь отправить запрос (с SoapUI) я получаю следующее сообщение об ошибке в журнале:

WARN [EndpointNotFound] No endpoint mapping found for [SaajSoapMessage {http://schemas.mycompany/MyService}MyRequest] 

Я использовал PayloadRootQNameEndpointMapping с большим успехом и раньше, но это не может работать ,

Любая помощь приветствуется.

С уважением.

+0

любая удача, чтобы это работало? – skaffman

ответ

0

Есть ли у вас адаптер-адаптер-обработчик? Вам понадобится один, чтобы использовать MarshallingPayloadEndpoint, так что весна знает, как выполнить сортировку. Адаптер называется чем-то вроде MarshallingEndpointHandlerAdapter или аналогичным.

+0

Я не определил MarshallingPayloadEndpoint. То, что я сделал, это настройка свойств маршаллера/unmarshaller объекта AbstractMarshallingPayloadEndpoint. Это работает с PayloadRootQNameEndpointMapping, но я рассмотрю MarshallingEndpointHandlerAdapter. Спасибо – maskefjes

0

В вашем SOAP-клиенте (SOAPUI) вам нужно добавить заголовок SOAPAction к вашему запросу, чтобы обеспечить весну действием SOAP для использования в его сопоставлении.

E.g. SOAPAction = http: // myCompany/MyService/MyRequest/mySoapActionOne

Не должно быть никакого значения, какой тип конечной точки вы используете, поскольку в настоящее время вы получаете ответ 404 - ваш запрос не находит его путь к любой конечной точке.

Смежные вопросы