title: No endpoint mapping found for SaajSoapMessage
body: <p>I have been having issues trying to get endpoint mapping to work for my web service. I am using Tomcat to host my web service and I am using soapUI to send test messages to it.  </p>
  
  <p>The following message from the Tomcat log shows the creation of the endpoint mapping bean:</p>
  
  <pre><code>6458 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.server.endpoint.mapping.SoapActionEndpointMapping  - Mapped key [{http://endpoint.ws.example.com}pushAbcToXyzOperation] onto endpoint [com.abc.xc.model.PushAbcToXyzRequest@131ebb3[...]]
  </code></pre>
  
  <p>However, the endpoint mapping bean must be incorrect because I receive the following "no endpoint mapping found" message:</p>
  
  <pre><code>6739 [http-apr-8080-exec-6] WARN  org.springframework.ws.server.EndpointNotFound  - No endpoint mapping found for [SaajSoapMessage {http://endpoint.ws.example.com}pushAbcToXyzOperation]
  </code></pre>
  
  <p>Here is the web.xml</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
           version="2.4"&gt;
  
      &lt;display-name&gt;abc2xyzWS&lt;/display-name&gt;
  
      &lt;servlet&gt;
          &lt;servlet-name&gt;spring-ws&lt;/servlet-name&gt;
          &lt;servlet-class&gt;org.springframework.ws.transport.http.MessageDispatcherServlet&lt;/servlet-class&gt;
      &lt;init-param&gt;
          &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;
          &lt;param-value&gt;WEB-INF/spring-ws-context.xml&lt;/param-value&gt;
      &lt;/init-param&gt;
      &lt;/servlet&gt;
  
      &lt;servlet-mapping&gt;
          &lt;servlet-name&gt;spring-ws&lt;/servlet-name&gt;
          &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
      &lt;/servlet-mapping&gt;
  
  &lt;/web-app&gt;
  </code></pre>
  
  <p>Here is the spring-ws-context.xml</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;beans xmlns="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:sws="http://www.springframework.org/schema/web-services"
         xmlns:context="http://www.springframework.org/schema/context"
         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
          http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services-2.0.xsd"&gt;
  
      &lt;sws:annotation-driven/&gt;
      &lt;context:annotation-config /&gt;
  
      &lt;import resource="classpath:/xyz-endpoint-context.xml" /&gt;
  
      &lt;!--==========================================================
      *
      *  Spring Web Service Configuration
      *
      =============================================================--&gt;
  
      &lt;bean name="loadPayload" class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping"&gt;
          &lt;description&gt;
              Detects @PayloadRoot annotations on @Endpoint bean methods.
          &lt;/description&gt;
  
          &lt;property name="interceptors"&gt;
              &lt;list&gt;
                  &lt;bean class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor"/&gt;
                  &lt;bean class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor"&gt;
                      &lt;property name="schema" value="classpath:/AbcAPI.xsd"/&gt;
                      &lt;property name="validateRequest" value="true"/&gt;
                      &lt;property name="validateResponse" value="true"/&gt;
                  &lt;/bean&gt;
              &lt;/list&gt;
          &lt;/property&gt;
  
          &lt;property name="order" value="1"/&gt;
      &lt;/bean&gt;
  
      &lt;bean id="pushService" class="com.abc.xc.model.PushAbcToXyzRequest"/&gt;
  
      &lt;bean id="endpointMapping" class="org.springframework.ws.soap.server.endpoint.mapping.SoapActionEndpointMapping"&gt;
         &lt;property name="mappings"&gt;
            &lt;props&gt;
                &lt;prop key="{http://endpoint.ws.example.com}pushAbcToXyzOperation"&gt;pushService&lt;/prop&gt;
            &lt;/props&gt;
         &lt;/property&gt;
  
      &lt;/bean&gt;
  
  &lt;/beans&gt;
  </code></pre>
  
  <p>Here is the xyz-endpoint-context.xml</p>
  
  <pre><code>&lt;beans xmlns="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:context="http://www.springframework.org/schema/context"
         xsi:schemaLocation="http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
          http://www.springframework.org/schema/context
          http://www.springframework.org/schema/context/spring-context-3.0.xsd"&gt;
  
      &lt;import resource="classpath:/applicationContext.xml" /&gt;
      &lt;context:component-scan base-package="com.abc.ws.endpoint"/&gt;
  &lt;/beans&gt;
  </code></pre>
  
  <p>Here is the applicationContext.xml</p>
  
  <pre><code>&lt;beans xmlns="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
         xmlns:context="http://www.springframework.org/schema/context"
  
         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"&gt;
  
      &lt;!--===========================================================================
       *
       *  opis2pips service module configuration.
       *
       =============================================================================--&gt;
       &lt;context:property-placeholder location="classpath:/applicationContext.properties"/&gt;
       &lt;context:component-scan base-package="com.abc.xc.service"/&gt;
  
       &lt;bean id="serviceURL" class="java.lang.String"&gt;
           &lt;constructor-arg&gt;&lt;value&gt;${serviceURL}&lt;/value&gt;&lt;/constructor-arg&gt;
       &lt;/bean&gt;
       ...
       &lt;bean id="emailerrormessage" class="java.lang.String"&gt;
          &lt;constructor-arg&gt;&lt;value&gt;${emailerrormessage}&lt;/value&gt;&lt;/constructor-arg&gt;
       &lt;/bean&gt; 
  
  &lt;/beans&gt;
  </code></pre>
  
  <p>Here is the endpoint</p>
  
  <pre><code>package com.abc.ws.endpoint.endpoint;
  
  import com.abc.xc.model.WSstatusType;
  import com.abc.xc.model.PushAbcToXyzRequest;
  import com.abc.xc.model.QueryXyzRequest;
  import com.abc.xc.model.XyzResponse;
  import com.abc.xc.service.XyzClient;
  import com.abc.xc.service.WSemailService;
  import com.abc.xc.service.AbcToXyzTranslationService;
  import com.abc.xc.exception.WSexception;
  
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.ws.server.endpoint.annotation.Endpoint;
  import org.springframework.ws.server.endpoint.annotation.PayloadRoot;
  import org.springframework.ws.server.endpoint.annotation.RequestPayload;
  import org.springframework.ws.server.endpoint.annotation.ResponsePayload;
  
  import contracts.xyz.GetTicketResponse;
  import contracts.xyz.PostTicketResponse;
  import contracts.xyz.Ticket;
  import contracts.xyz.TicketMessageProcessingResult;
  
  @Endpoint
  public class XyzWebServiceController {
      @Autowired
      private XyzClient XyzClientservice;
      @Autowired
      private AbcToXyzTranslationService translationservice;
      @Autowired
      WSemailService mailservice;
  
      protected static final String NAMESPACE_URI = "http://www.example.com/schema";
  
      @PayloadRoot(namespace = NAMESPACE_URI, localPart = "PushAbcToXyzRequest")
  
      @ResponsePayload
      public XyzResponse PushAbcToXyzOperation(@RequestPayload PushAbcToXyzRequest PushAbcToXyzRequest){
  
          XyzResponse XyzResponse = null;
          Ticket ticket = null;
          try {
              ticket = translationservice.abcInputToXyzTicket(PushAbcToXyzRequest);
              PostTicketResponse response = XyzClientservice.postTicket(ticket);
              Long transactionid = response.getInteractionId();
  
              if(transactionid != null){
                  GetTicketResponse gtresponse = XyzClientservice.getTicket();
                  Ticket gtresponseTicket = gtresponse.getTicket().getValue();
                  XyzResponse =  translationservice.XyzTicketToXyzResponse(gtresponseTicket);
              }
  
              XyzResponse.setWSstatus(WSstatusType.SUCCESS);
              mailservice.sendEmail(true, PushAbcToXyzRequest, transactionid);
  ...
  </code></pre>
  
  <p>Here is the SOAP request</p>
  
  <pre><code>&lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:end="http://endpoint.ws.example.com" xmlns:mod="http://model.xc.example.com"&gt;
     &lt;soapenv:Header/&gt;
     &lt;soapenv:Body&gt;
        &lt;end:pushAbcToXyzOperation&gt;
           &lt;end:pushAbcToXyzRequest&gt;
              ...
           &lt;/end:pushAbcToXyzRequest&gt;
        &lt;/end:pushAbcToXyzOperation&gt;
     &lt;/soapenv:Body&gt;
  &lt;/soapenv:Envelope&gt;
  </code></pre>
  
  <p>Here is a portion of the Tomcat log, from the creation of the endpoint mapping bean, through the "no endpoint mapping found" message:</p>
  
  <pre><code>6349 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Finished creating instance of bean 'loadPayload'
  6349 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Creating shared instance of singleton bean 'pushService'
  6349 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Creating instance of bean 'pushService'
  6365 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Eagerly caching bean 'pushService' to allow for resolving potential circular references
  6427 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Finished creating instance of bean 'pushService'
  6427 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Creating shared instance of singleton bean 'endpointMapping'
  6427 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Creating instance of bean 'endpointMapping'
  6427 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Eagerly caching bean 'endpointMapping' to allow for resolving potential circular references
  6443 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'pushService'
  6458 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.server.endpoint.mapping.SoapActionEndpointMapping  - Mapped key [{http://endpoint.ws.example.com}pushAbcToXyzOperation] onto endpoint [com.abc.xc.model.PushAbcToXyzRequest@131ebb3[requestID=&lt;null&gt;, ...]]
  6458 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Finished creating instance of bean 'endpointMapping'
  6458 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0'
  6474 [http-apr-8080-exec-6] DEBUG org.springframework.web.context.support.XmlWebApplicationContext  - Unable to locate LifecycleProcessor with name 'lifecycleProcessor': using default [org.springframework.context.support.DefaultLifecycleProcessor@13a0067]
  6474 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'lifecycleProcessor'
  6505 [http-apr-8080-exec-6] INFO  org.springframework.ws.soap.saaj.SaajSoapMessageFactory  - Creating SAAJ 1.3 MessageFactory with SOAP 1.1 Protocol
  6505 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.saaj.SaajSoapMessageFactory  - Using MessageFactory class [com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl]
  6505 [http-apr-8080-exec-6] DEBUG org.springframework.ws.transport.http.MessageDispatcherServlet  - No WebServiceMessageFactory found in servlet 'spring-ws': using default
  6505 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter#0'
  6521 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'org.springframework.ws.soap.server.endpoint.SoapFaultAnnotationExceptionResolver#0'
  6521 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'org.springframework.ws.soap.server.endpoint.SimpleSoapExceptionResolver#0'
  6521 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping#0'
  6521 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'org.springframework.ws.soap.server.endpoint.mapping.SoapActionAnnotationMethodEndpointMapping#0'
  6521 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping#0'
  6521 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'loadPayload'
  6521 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'endpointMapping'
  6521 [http-apr-8080-exec-6] DEBUG org.springframework.ws.transport.http.MessageDispatcherServlet  - No MessageDispatcher found in servlet 'spring-ws': using default
  6521 [http-apr-8080-exec-6] DEBUG org.springframework.ws.transport.http.MessageDispatcherServlet  - Published WebApplicationContext of servlet 'spring-ws' as ServletContext attribute with name [org.springframework.web.servlet.FrameworkServlet.CONTEXT.spring-ws]
  6521 [http-apr-8080-exec-6] INFO  org.springframework.ws.transport.http.MessageDispatcherServlet  - FrameworkServlet 'spring-ws': initialization completed in 6053 ms
  6521 [http-apr-8080-exec-6] DEBUG org.springframework.ws.transport.http.MessageDispatcherServlet  - Servlet 'spring-ws' configured successfully
  6583 [http-apr-8080-exec-6] DEBUG org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter  - Accepting incoming [org.springframework.ws.transport.http.HttpServletConnection@7ac6c] at [http://localhost:8080/abc2xyzWS/services/XyzWebServiceController]
  6677 [http-apr-8080-exec-6] DEBUG org.springframework.ws.server.MessageTracing.received  - Received request [SaajSoapMessage {http://endpoint.ws.example.com}pushAbcToXyzOperation]
  6723 [http-apr-8080-exec-6] DEBUG org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping  - Looking up endpoint for [{http://endpoint.ws.example.com}pushAbcToXyzOperation]
  6723 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.server.SoapMessageDispatcher  - Endpoint mapping [org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping@14481bb] has no mapping for request
  6723 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.server.endpoint.mapping.SoapActionAnnotationMethodEndpointMapping  - Looking up endpoint for []
  6723 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.server.SoapMessageDispatcher  - Endpoint mapping [org.springframework.ws.soap.server.endpoint.mapping.SoapActionAnnotationMethodEndpointMapping@a14fed] has no mapping for request
  6723 [http-apr-8080-exec-6] DEBUG org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping  - Looking up endpoint for [{http://endpoint.ws.example.com}pushAbcToXyzOperation]
  6723 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.server.SoapMessageDispatcher  - Endpoint mapping [org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping@868c6d] has no mapping for request
  6723 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.server.SoapMessageDispatcher  - Endpoint mapping [org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping@45484a] has no mapping for request
  6723 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.server.SoapMessageDispatcher  - Endpoint mapping [org.springframework.ws.soap.server.endpoint.mapping.SoapActionEndpointMapping@8d00c6] has no mapping for request
  6739 [http-apr-8080-exec-6] WARN  org.springframework.ws.server.EndpointNotFound  - No endpoint mapping found for [SaajSoapMessage {http://endpoint.ws.example.com}pushAbcToXyzOperation]
  </code></pre>
  
  <p>Please let me know if you need to see any additional information, and thank you in advance for any help in solving this issue.</p>